| 0.00% | Accuracy (recall) | Matched: 12/33, FP: 35 | | parsedCount | 47 | | matched | 12 | | total | 33 | | falsePositives | 35 | | expectedDetails | | 0 | | expected | | entry | "861" | | detail | "parkLocation" | | summary | "The Fae Grove is in Richmond Park per codex, but the passage says Hyde Park." |
| | status | "missed" | | nearMiss | | parsed | | entry | "4406" | | detail | "location" | | explanation | "The codex states The Veil Market is \"abandoned Tube station beneath Camden,\" but the text mentions \"Shoreditch.\"" | | paragraph | 15 | | substring | "Shoreditch" |
| | reason | "entry mismatch: got \"4406\", expected \"861\"" |
|
| | 1 | | expected | | entry | "861" | | detail | "standingStones" | | summary | "The grove has oak standing stones per codex, but the passage says elm." |
| | status | "missed" |
| | 2 | | expected | | entry | "4424" | | detail | "eyeColor" | | summary | "Isolde has pale lavender eyes per codex, but the passage says pale blue eyes." |
| | status | "matched" | | matchedBy | | entry | "4424" | | detail | "eyeColor" | | explanation | "The codex states Isolde's eyes are \"pale lavender,\" but the text describes them as \"pale blue.\"" | | paragraph | 1 | | substring | "her pale blue eyes" |
| | location | | extractedText | "her pale blue eyes" | | inBounds | true | | expectedText | "Her pale blue eyes, unblinking" | | locationAccurate | true |
|
| | 3 | | expected | | entry | "4424" | | detail | "eyeColor" | | summary | "Isolde has pale lavender eyes per codex, but the passage again says pale blue eyes in a later paragraph." |
| | status | "missed" | | nearMiss | | parsed | | entry | "4424" | | detail | "hair" | | explanation | "The codex states Isolde's hair is \"silver, reaching her waist,\" but the text describes it as \"waist-length,\" which could imply a shorter length unless interpreted differently. However, the context of \"stirring in a breeze that didn't exist outside the boundary\" suggests a longer length, but the codex explicitly states \"reaching her waist.\"" | | paragraph | 1 | | substring | "her waist-length silver hair" |
| | reason | "detail mismatch: got \"hair\", expected \"eyeColor\"" |
|
| | 4 | | expected | | entry | "4424" | | detail | "footprints" | | summary | "Isolde leaves no footprints per codex, but the passage says she leaves clear prints." |
| | status | "matched" | | matchedBy | | entry | "4424" | | detail | "footprints" | | explanation | "The codex states Isolde \"leaves no footprints when she walks.\"" | | paragraph | 1 | | substring | "her bare feet leaving clear prints" |
| | location | | extractedText | "[not found in paragraph 1]" | | inBounds | true | | expectedText | "her bare feet leaving clear prints in the soft earth" | | locationAccurate | false |
|
| | 5 | | expected | | entry | "2006" | | detail | "temperature" | | summary | "The Fae-Forged Blade is always cold per codex, but the passage says warm." |
| | status | "missed" |
| | 6 | | expected | | entry | "4414" | | detail | "glasses" | | summary | "Eva wears round glasses per codex, but the passage says square glasses." |
| | status | "matched" | | matchedBy | | entry | "4414" | | detail | "glasses" | | explanation | "The codex states Eva wears \"round glasses,\" but the text describes them as \"square.\"" | | paragraph | 2 | | substring | "her square glasses kept fogging" |
| | location | | extractedText | "her square glasses kept fogging" | | inBounds | true | | expectedText | "Her square glasses kept fogging" | | locationAccurate | true |
|
| | 7 | | expected | | entry | "2005" | | detail | "containerColor" | | summary | "Dream Dust is stored in cobalt-blue vials per codex, but Isolde says red glass vials." |
| | status | "missed" |
| | 8 | | expected | | entry | "2005" | | detail | "sealMaterial" | | summary | "Dream Dust vials are sealed with black wax per codex, but Isolde says white wax." |
| | status | "missed" | | nearMiss | | parsed | | entry | "4404" | | detail | "sealMaterial" | | explanation | "The codex does not specify Dream Dust's seal material; the text describes it as \"white wax.\"" | | paragraph | 13 | | substring | "white wax" |
| | reason | "entry mismatch: got \"4404\", expected \"2005\"" |
|
| | 9 | | expected | | entry | "6003" | | detail | "master" | | summary | "The Somnian Cult serves Prince Asmodeus per codex, but Isolde says Prince Lilith." |
| | status | "missed" | | nearMiss | | parsed | | entry | "4403" | | detail | "master" | | explanation | "The codex states the master of the Somnian Cult is \"Prince Asmodeus,\" but the text describes it as \"Prince Lilith.\"" | | paragraph | 11 | | substring | "Prince Lilith" |
| | reason | "entry mismatch: got \"4403\", expected \"6003\"" |
|
| | 10 | | expected | | entry | "4422" | | detail | "eyeColor" | | summary | "Father Cormac has pale blue eyes per codex, but the passage says dark brown eyes." |
| | status | "missed" | | nearMiss | | parsed | | entry | "4416" | | detail | "eyeColor" | | explanation | "The codex states Father Cormac's eyes are \"pale blue,\" but the text describes them as \"dark brown.\"" | | paragraph | 3 | | substring | "dark brown eyes" |
| | reason | "entry mismatch: got \"4416\", expected \"4422\"" |
|
| | 11 | | expected | | entry | "4422" | | detail | "rosary" | | summary | "Cormac carries a rowan wood rosary per codex, but the passage says cedar." |
| | status | "matched" | | matchedBy | | entry | "4422" | | detail | "rosary" | | explanation | "The text does not mention cedar rosary beads for Father Cormac; the codex states it is \"rowan wood.\"" | | paragraph | 5 | | substring | "cedar rosary beads" |
| | location | | extractedText | "[not found in paragraph 5]" | | inBounds | true | | expectedText | "his cedar rosary beads" | | locationAccurate | false |
|
| | 12 | | expected | | entry | "7002" | | detail | "signedYear" | | summary | "The Covenant of Separation was signed in 1215 per codex, but Cormac says 1066." |
| | status | "matched" | | matchedBy | | entry | "7002" | | detail | "signedYear" | | explanation | "The text mentions the Covenant of Separation from \"1066,\" but the codex states it was signed in \"1215.\"" | | paragraph | 11 | | substring | "1066" |
| | location | | extractedText | "[not found in paragraph 11]" | | inBounds | true | | expectedText | "the old treaty from 1066" | | locationAccurate | false |
|
| | 13 | | expected | | entry | "6004" | | detail | "headquarters" | | summary | "The Parish Guard HQ is St. Brigid's in Islington per codex, but Cormac says Southwark." |
| | status | "missed" |
| | 14 | | expected | | entry | "4415" | | detail | "cane" | | summary | "Lucien carries an ivory-handled cane per codex, but the passage says mahogany." |
| | status | "matched" | | matchedBy | | entry | "4415" | | detail | "cane" | | explanation | "The codex states Lucien's cane is \"ivory-handled,\" but the text describes it as \"mahogany.\"" | | paragraph | 6 | | substring | "mahogany cane" |
| | location | | extractedText | "[not found in paragraph 6]" | | inBounds | true | | expectedText | "leaning on his mahogany cane" | | locationAccurate | false |
|
| | 15 | | expected | | entry | "4415" | | detail | "eyeColor" | | summary | "Lucien has heterochromatic eyes (one amber, one black), but the passage says both amber." |
| | status | "missed" | | nearMiss | | parsed | | entry | "4416" | | detail | "eyeColor" | | explanation | "The codex states Father Cormac's eyes are \"pale blue,\" but the text describes them as \"dark brown.\"" | | paragraph | 3 | | substring | "dark brown eyes" |
| | reason | "entry mismatch: got \"4416\", expected \"4415\"" |
|
| | 16 | | expected | | entry | "4421" | | detail | "tattoo" | | summary | "Yasmin's flame serpent tattoo is on her left arm per codex, but the passage says right arm." |
| | status | "matched" | | matchedBy | | entry | "4421" | | detail | "tattoo" | | explanation | "The codex states Yasmin has a \"flame serpent tattoo coiling up her left arm,\" which matches the text." | | paragraph | 7 | | substring | "flame serpent tattoo coiling" |
| | location | | extractedText | "[not found in paragraph 7]" | | inBounds | true | | expectedText | "tattoo on her right arm" | | locationAccurate | false |
|
| | 17 | | expected | | entry | "4423" | | detail | "tattoo" | | summary | "Wei-Lin's dragon tattoo covers his back per codex, but the passage says chest." |
| | status | "matched" | | matchedBy | | entry | "4423" | | detail | "dragonTattoo" | | explanation | "The codex states Wei-Lin has a \"dragon tattoo covering his entire back,\" but the text describes it as \"on his chest.\"" | | paragraph | 4 | | substring | "The edge of the dragon tattoo on his chest" |
| | location | | extractedText | "[not found in paragraph 4]" | | inBounds | true | | expectedText | "the dragon tattoo on his chest" | | locationAccurate | false |
|
| | 18 | | expected | | entry | "2006" | | detail | "material" | | summary | "Fae-Forged Blades are moonsilver per codex, but Wei-Lin says bronze." |
| | status | "missed" | | nearMiss | | parsed | | entry | "4404" | | detail | "sealMaterial" | | explanation | "The codex does not specify Dream Dust's seal material; the text describes it as \"white wax.\"" | | paragraph | 13 | | substring | "white wax" |
| | reason | "entry mismatch: got \"4404\", expected \"2006\"" |
|
| | 19 | | expected | | entry | "856" | | detail | "currentLocation" | | summary | "The Veil Market is under Camden per codex, but Wei-Lin says Shoreditch." |
| | status | "missed" | | nearMiss | | parsed | | entry | "4406" | | detail | "location" | | explanation | "The codex states The Veil Market is \"abandoned Tube station beneath Camden,\" but the text mentions \"Shoreditch.\"" | | paragraph | 15 | | substring | "Shoreditch" |
| | reason | "entry mismatch: got \"4406\", expected \"856\"" |
|
| | 20 | | expected | | entry | "4420" | | detail | "hair" | | summary | "Kai has dyed electric-blue hair per codex, but the passage says natural black hair." |
| | status | "matched" | | matchedBy | | entry | "4420" | | detail | "hair" | | explanation | "The codex states Kai's hair is \"dyed electric-blue,\" but the text describes it as \"natural black.\"" | | paragraph | 4 | | substring | "natural black hair" |
| | location | | extractedText | "[not found in paragraph 4]" | | inBounds | true | | expectedText | "his natural black hair falling into his face" | | locationAccurate | false |
|
| | 21 | | expected | | entry | "6006" | | detail | "logo" | | summary | "Blackthorn Security's logo is a thorned branch inside a shield per codex, but Kai says a sword inside a circle." |
| | status | "missed" | | nearMiss | | parsed | | entry | "4406" | | detail | "logo" | | explanation | "The codex states Blackthorn's logo is a \"thorned branch inside a shield,\" but the text describes it as \"sword inside a circle.\"" | | paragraph | 9 | | substring | "sword inside a circle" |
| | reason | "entry mismatch: got \"4406\", expected \"6006\"" |
|
| | 22 | | expected | | entry | "4419" | | detail | "walkingStick" | | summary | "Maggie carries a blackthorn stick per codex, but the passage says oak." |
| | status | "missed" | | nearMiss | | parsed | | entry | "4419" | | detail | "age" | | explanation | "The text mentions the Covenant of Separation from \"1066,\" but the codex states it was signed in \"1215.\"" | | paragraph | 3 | | substring | "1066" |
| | reason | "detail mismatch: got \"age\", expected \"walkingStick\"" |
|
| | 23 | | expected | | entry | "4419" | | detail | "eyeColor" | | summary | "Maggie has grey eyes per codex, but the passage says green." |
| | status | "missed" | | nearMiss | | parsed | | entry | "4416" | | detail | "eyeColor" | | explanation | "The codex states Father Cormac's eyes are \"pale blue,\" but the text describes them as \"dark brown.\"" | | paragraph | 3 | | substring | "dark brown eyes" |
| | reason | "entry mismatch: got \"4416\", expected \"4419\"" |
|
| | 24 | | expected | | entry | "6001" | | detail | "foundingYear" | | summary | "The Wardens were founded in 1215 per codex, but Maggie says 1066." |
| | status | "missed" | | nearMiss | | parsed | | entry | "4405" | | detail | "foundingYear" | | explanation | "The text does not mention the founding year of the Wardens, but the codex states it was \"1215.\" The text does not contradict this." | | paragraph | 6 | | substring | "1215" |
| | reason | "entry mismatch: got \"4405\", expected \"6001\"" |
|
| | 25 | | expected | | entry | "4417" | | detail | "scar" | | summary | "Tomás has a scar on his left forearm per codex, but the passage says right forearm." |
| | status | "matched" | | matchedBy | | entry | "4417" | | detail | "scar" | | explanation | "The codex states Tomás has a \"scar running along his left forearm,\" which matches the text." | | paragraph | 5 | | substring | "scar running along his left forearm" |
| | location | | extractedText | "[not found in paragraph 5]" | | inBounds | true | | expectedText | "His scarred right forearm" | | locationAccurate | false |
|
| | 26 | | expected | | entry | "4417" | | detail | "birthplace" | | summary | "Tomás was born in Seville per codex, but the passage implies Madrid accent." |
| | status | "matched" | | matchedBy | | entry | "4417" | | detail | "birthplace" | | explanation | "The codex states Tomás's birthplace is \"Seville, Spain,\" which matches the text." | | paragraph | 5 | | substring | "Seville" |
| | location | | extractedText | "[not found in paragraph 5]" | | inBounds | true | | expectedText | "His Madrid accent" | | locationAccurate | false |
|
| | 27 | | expected | | entry | "4418" | | detail | "eyeColor" | | summary | "Nyx has violet eyes per codex, but the passage says blue." |
| | status | "matched" | | matchedBy | | entry | "4418" | | detail | "eyeColor" | | explanation | "The codex states Nyx's eyes are \"faintly glowing violet,\" but the text describes them as \"pale blue.\"" | | paragraph | 1 | | substring | "her pale blue eyes, unblinking" |
| | location | | extractedText | "her pale blue eyes, unblinking" | | inBounds | true | | expectedText | "their glowing blue eyes" | | locationAccurate | false |
|
| | 28 | | expected | | entry | "2001" | | detail | "chainMaterial" | | summary | "The Heartstone Pendant has a silver chain per codex, but the passage says golden chain." |
| | status | "missed" |
| | 29 | | expected | | entry | "2001" | | detail | "origin" | | summary | "The Heartstone Pendant was forged in Dymas per codex, but Isolde says it was forged in Avaros." |
| | status | "missed" |
| | 30 | | expected | | entry | "855" | | detail | "ruler" | | summary | "Avaros is Prince Mammon's realm per codex, but Tomás says Prince Belphegor's agents operate there." |
| | status | "missed" | | nearMiss | | parsed | | entry | "4402" | | detail | "ruler" | | explanation | "The codex states the ruler of Avaros is \"Prince Mammon,\" but the text does not contradict Lucien's statement about the Court shifting from Dymas to Irath." | | paragraph | 12 | | substring | "Prince Mammon" |
| | reason | "entry mismatch: got \"4402\", expected \"855\"" |
|
| | 31 | | expected | | entry | "2006" | | detail | "temperature" | | summary | "The Fae-Forged Blade is always cold per codex, but the passage again describes it as warm in a later paragraph." |
| | status | "missed" |
| | 32 | | expected | | entry | "6002" | | detail | "headquarters" | | summary | "The Crimson Court's headquarters is in Dymas per codex, but Lucien says their base has shifted to Irath." |
| | status | "missed" |
|
| | falsePositiveDetails | | 0 | | parsed | | entry | "4418" | | detail | "age" | | explanation | "The codex states Nyx is \"ageless,\" not three hundred years old." | | paragraph | 1 | | substring | "three-hundred-year-old Half-Fae body" |
| | status | "false_positive" | | location | | extractedText | "three-hundred-year-old Half-Fae body" | | inBounds | true | | expectedText | "their glowing blue eyes" | | locationAccurate | false |
| | closestExpected | | entry | "4418" | | detail | "eyeColor" | | summary | "Nyx has violet eyes per codex, but the passage says blue." |
| | reason | "detail mismatch: got \"age\", expected \"eyeColor\"" |
| | 1 | | parsed | | entry | "4424" | | detail | "hair" | | explanation | "The codex states Isolde's hair is \"silver, reaching her waist,\" but the text describes it as \"waist-length,\" which could imply a shorter length unless interpreted differently. However, the context of \"stirring in a breeze that didn't exist outside the boundary\" suggests a longer length, but the codex explicitly states \"reaching her waist.\"" | | paragraph | 1 | | substring | "her waist-length silver hair" |
| | status | "false_positive" | | location | | extractedText | "her waist-length silver hair" | | inBounds | true | | expectedText | "Her pale blue eyes, unblinking" | | locationAccurate | false |
| | closestExpected | | entry | "4424" | | detail | "eyeColor" | | summary | "Isolde has pale lavender eyes per codex, but the passage says pale blue eyes." |
| | reason | "detail mismatch: got \"hair\", expected \"eyeColor\"" |
| | 2 | | parsed | | entry | "4424" | | detail | "speech" | | explanation | "The codex states she \"speaks in riddles,\" but the text does not contradict this." | | paragraph | 1 | | substring | "her speech" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 1]" | | inBounds | true | | expectedText | "Her pale blue eyes, unblinking" | | locationAccurate | false |
| | closestExpected | | entry | "4424" | | detail | "eyeColor" | | summary | "Isolde has pale lavender eyes per codex, but the passage says pale blue eyes." |
| | reason | "detail mismatch: got \"speech\", expected \"eyeColor\"" |
| | 3 | | parsed | | entry | "4424" | | detail | "appearance" | | explanation | "The codex states she is \"ethereal, ageless,\" which aligns with the text." | | paragraph | 1 | | substring | "ethereal, ageless" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 1]" | | inBounds | true | | expectedText | "Her pale blue eyes, unblinking" | | locationAccurate | false |
| | closestExpected | | entry | "4424" | | detail | "eyeColor" | | summary | "Isolde has pale lavender eyes per codex, but the passage says pale blue eyes." |
| | reason | "detail mismatch: got \"appearance\", expected \"eyeColor\"" |
| | 4 | | parsed | | entry | "4424" | | detail | "compulsion" | | explanation | "The codex states she \"cannot lie (Fae compulsion) but can mislead,\" which aligns with the text." | | paragraph | 1 | | substring | "cannot lie" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 1]" | | inBounds | true | | expectedText | "Her pale blue eyes, unblinking" | | locationAccurate | false |
| | closestExpected | | entry | "4424" | | detail | "eyeColor" | | summary | "Isolde has pale lavender eyes per codex, but the passage says pale blue eyes." |
| | reason | "detail mismatch: got \"compulsion\", expected \"eyeColor\"" |
| | 5 | | parsed | | entry | "4414" | | detail | "hair" | | explanation | "The codex states Eva's hair is \"curly red,\" which matches the text." | | paragraph | 2 | | substring | "her curly red hair" |
| | status | "false_positive" | | location | | extractedText | "her curly red hair" | | inBounds | true | | expectedText | "Her square glasses kept fogging" | | locationAccurate | false |
| | closestExpected | | entry | "4414" | | detail | "glasses" | | summary | "Eva wears round glasses per codex, but the passage says square glasses." |
| | reason | "detail mismatch: got \"hair\", expected \"glasses\"" |
| | 6 | | parsed | | entry | "4414" | | detail | "satchel" | | explanation | "The codex states Eva's satchel is \"worn leather,\" which matches the text." | | paragraph | 2 | | substring | "clutching her leather satchel" |
| | status | "false_positive" | | location | | extractedText | "clutching her leather satchel" | | inBounds | true | | expectedText | "Her square glasses kept fogging" | | locationAccurate | false |
| | closestExpected | | entry | "4414" | | detail | "glasses" | | summary | "Eva wears round glasses per codex, but the passage says square glasses." |
| | reason | "detail mismatch: got \"satchel\", expected \"glasses\"" |
| | 7 | | parsed | | entry | "4416" | | detail | "hair" | | explanation | "The codex states Father Cormac's hair is \"thinning ginger,\" which matches the text." | | paragraph | 3 | | substring | "thinning ginger" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 3]" | | inBounds | true | | expectedText | "his natural black hair falling into his face" | | locationAccurate | false |
| | closestExpected | | entry | "4420" | | detail | "hair" | | summary | "Kai has dyed electric-blue hair per codex, but the passage says natural black hair." |
| | reason | "entry mismatch: got \"4416\", expected \"4420\"" |
| | 8 | | parsed | | entry | "4416" | | detail | "eyeColor" | | explanation | "The codex states Father Cormac's eyes are \"pale blue,\" but the text describes them as \"dark brown.\"" | | paragraph | 3 | | substring | "dark brown eyes" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 3]" | | inBounds | true | | expectedText | "Her pale blue eyes, unblinking" | | locationAccurate | false |
| | closestExpected | | entry | "4424" | | detail | "eyeColor" | | summary | "Isolde has pale lavender eyes per codex, but the passage says pale blue eyes." |
| | reason | "entry mismatch: got \"4416\", expected \"4424\"" |
| | 9 | | parsed | | entry | "4416" | | detail | "rosary" | | explanation | "The codex states his rosary is \"rowan wood beads,\" but the text describes it as \"cedar.\"" | | paragraph | 3 | | substring | "cedar rosary beads" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 3]" | | inBounds | true | | expectedText | "his cedar rosary beads" | | locationAccurate | false |
| | closestExpected | | entry | "4422" | | detail | "rosary" | | summary | "Cormac carries a rowan wood rosary per codex, but the passage says cedar." |
| | reason | "entry mismatch: got \"4416\", expected \"4422\"" |
| | 10 | | parsed | | entry | "4419" | | detail | "age" | | explanation | "The text mentions the Covenant of Separation from \"1066,\" but the codex states it was signed in \"1215.\"" | | paragraph | 3 | | substring | "1066" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 3]" | | inBounds | true | | expectedText | "her oak walking stick" | | locationAccurate | false |
| | closestExpected | | entry | "4419" | | detail | "walkingStick" | | summary | "Maggie carries a blackthorn stick per codex, but the passage says oak." |
| | reason | "detail mismatch: got \"age\", expected \"walkingStick\"" |
| | 11 | | parsed | | entry | "4423" | | detail | "birthplace" | | explanation | "The text mentions \"Chinatown\" but does not contradict Wei-Lin's location. However, the codex states Wei-Lin's headquarters are in \"Hong Kong\" in his backstory, and the text does not align with his role as a noodle shop owner in London." | | paragraph | 4 | | substring | "Chinatown" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 4]" | | inBounds | true | | expectedText | "the dragon tattoo on his chest" | | locationAccurate | false |
| | closestExpected | | entry | "4423" | | detail | "tattoo" | | summary | "Wei-Lin's dragon tattoo covers his back per codex, but the passage says chest." |
| | reason | "detail mismatch: got \"birthplace\", expected \"tattoo\"" |
| | 12 | | parsed | | entry | "4423" | | detail | "missingFinger" | | explanation | "The codex states Wei-Lin has a missing finger, which aligns with the text." | | paragraph | 4 | | substring | "missing the tip of his left little finger" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 4]" | | inBounds | true | | expectedText | "the dragon tattoo on his chest" | | locationAccurate | false |
| | closestExpected | | entry | "4423" | | detail | "tattoo" | | summary | "Wei-Lin's dragon tattoo covers his back per codex, but the passage says chest." |
| | reason | "detail mismatch: got \"missingFinger\", expected \"tattoo\"" |
| | 13 | | parsed | | entry | "4420" | | detail | "headphones" | | explanation | "The text mentions Kai behind a laptop screen, but the codex states he wears \"noise-cancelling headphones\" always around his neck." | | paragraph | 4 | | substring | "laptop screen" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 4]" | | inBounds | true | | expectedText | "his natural black hair falling into his face" | | locationAccurate | false |
| | closestExpected | | entry | "4420" | | detail | "hair" | | summary | "Kai has dyed electric-blue hair per codex, but the passage says natural black hair." |
| | reason | "detail mismatch: got \"headphones\", expected \"hair\"" |
| | 14 | | parsed | | entry | "4417" | | detail | "medallion" | | explanation | "The codex states Tomás wears a \"Saint Christopher medallion,\" which matches the text." | | paragraph | 5 | | substring | "Saint Christopher medallion" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 5]" | | inBounds | true | | expectedText | "His scarred right forearm" | | locationAccurate | false |
| | closestExpected | | entry | "4417" | | detail | "scar" | | summary | "Tomás has a scar on his left forearm per codex, but the passage says right forearm." |
| | reason | "detail mismatch: got \"medallion\", expected \"scar\"" |
| | 15 | | parsed | | entry | "4415" | | detail | "hair" | | explanation | "The codex states Lucien's hair is \"slicked-back platinum blond,\" which matches the text." | | paragraph | 6 | | substring | "slicked-back platinum blond" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 6]" | | inBounds | true | | expectedText | "leaning on his mahogany cane" | | locationAccurate | false |
| | closestExpected | | entry | "4415" | | detail | "cane" | | summary | "Lucien carries an ivory-handled cane per codex, but the passage says mahogany." |
| | reason | "detail mismatch: got \"hair\", expected \"cane\"" |
| | 16 | | parsed | | entry | "4415" | | detail | "dress" | | explanation | "The codex states Lucien wears \"tailored charcoal suits,\" which aligns with the text." | | paragraph | 6 | | substring | "tailored charcoal suits" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 6]" | | inBounds | true | | expectedText | "leaning on his mahogany cane" | | locationAccurate | false |
| | closestExpected | | entry | "4415" | | detail | "cane" | | summary | "Lucien carries an ivory-handled cane per codex, but the passage says mahogany." |
| | reason | "detail mismatch: got \"dress\", expected \"cane\"" |
| | 17 | | parsed | | entry | "4415" | | detail | "language" | | explanation | "The codex states this, which aligns with the text." | | paragraph | 6 | | substring | "speaks four languages fluently" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 6]" | | inBounds | true | | expectedText | "leaning on his mahogany cane" | | locationAccurate | false |
| | closestExpected | | entry | "4415" | | detail | "cane" | | summary | "Lucien carries an ivory-handled cane per codex, but the passage says mahogany." |
| | reason | "detail mismatch: got \"language\", expected \"cane\"" |
| | 18 | | parsed | | entry | "4405" | | detail | "foundingYear" | | explanation | "The text does not mention the founding year of the Wardens, but the codex states it was \"1215.\" The text does not contradict this." | | paragraph | 6 | | substring | "1215" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 6]" | | inBounds | true | | expectedText | "The Wardens were founded in 1066" | | locationAccurate | false |
| | closestExpected | | entry | "6001" | | detail | "foundingYear" | | summary | "The Wardens were founded in 1215 per codex, but Maggie says 1066." |
| | reason | "entry mismatch: got \"4405\", expected \"6001\"" |
| | 19 | | parsed | | entry | "4421" | | detail | "hair" | | explanation | "The codex states Yasmin's hair is \"long wavy dark,\" which matches the text." | | paragraph | 7 | | substring | "long wavy dark" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 7]" | | inBounds | true | | expectedText | "tattoo on her right arm" | | locationAccurate | false |
| | closestExpected | | entry | "4421" | | detail | "tattoo" | | summary | "Yasmin's flame serpent tattoo is on her left arm per codex, but the passage says right arm." |
| | reason | "detail mismatch: got \"hair\", expected \"tattoo\"" |
| | 20 | | parsed | | entry | "4421" | | detail | "scent" | | explanation | "The codex states Yasmin's scent is \"faintly of sandalwood and burnt sage,\" which matches the text." | | paragraph | 7 | | substring | "faintly of sandalwood and burnt sage" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 7]" | | inBounds | true | | expectedText | "tattoo on her right arm" | | locationAccurate | false |
| | closestExpected | | entry | "4421" | | detail | "tattoo" | | summary | "Yasmin's flame serpent tattoo is on her left arm per codex, but the passage says right arm." |
| | reason | "detail mismatch: got \"scent\", expected \"tattoo\"" |
| | 21 | | parsed | | entry | "4422" | | detail | "hair" | | explanation | "The codex states Father Cormac's hair is \"thinning ginger,\" which aligns with the text." | | paragraph | 8 | | substring | "dark brown eyes" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 8]" | | inBounds | true | | expectedText | "his dark brown eyes troubled" | | locationAccurate | false |
| | closestExpected | | entry | "4422" | | detail | "eyeColor" | | summary | "Father Cormac has pale blue eyes per codex, but the passage says dark brown eyes." |
| | reason | "detail mismatch: got \"hair\", expected \"eyeColor\"" |
| | 22 | | parsed | | entry | "4422" | | detail | "rosary" | | explanation | "The text does not mention cedar rosary beads; the codex states it is \"rowan wood.\"" | | paragraph | 8 | | substring | "cedar rosary beads" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 8]" | | inBounds | true | | expectedText | "his dark brown eyes troubled" | | locationAccurate | false |
| | closestExpected | | entry | "4422" | | detail | "eyeColor" | | summary | "Father Cormac has pale blue eyes per codex, but the passage says dark brown eyes." |
| | reason | "detail mismatch: got \"rosary\", expected \"eyeColor\"" |
| | 23 | | parsed | | entry | "4422" | | detail | "collar" | | explanation | "The codex states Father Cormac wears a \"clerical collar,\" which matches the text." | | paragraph | 8 | | substring | "clerical collar" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 8]" | | inBounds | true | | expectedText | "his dark brown eyes troubled" | | locationAccurate | false |
| | closestExpected | | entry | "4422" | | detail | "eyeColor" | | summary | "Father Cormac has pale blue eyes per codex, but the passage says dark brown eyes." |
| | reason | "detail mismatch: got \"collar\", expected \"eyeColor\"" |
| | 24 | | parsed | | entry | "4422" | | detail | "complexion" | | explanation | "The codex states his complexion is \"ruddy,\" which matches the text." | | paragraph | 8 | | substring | "ruddy" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 8]" | | inBounds | true | | expectedText | "his dark brown eyes troubled" | | locationAccurate | false |
| | closestExpected | | entry | "4422" | | detail | "eyeColor" | | summary | "Father Cormac has pale blue eyes per codex, but the passage says dark brown eyes." |
| | reason | "detail mismatch: got \"complexion\", expected \"eyeColor\"" |
| | 25 | | parsed | | entry | "4406" | | detail | "logo" | | explanation | "The codex states Blackthorn's logo is a \"thorned branch inside a shield,\" but the text describes it as \"sword inside a circle.\"" | | paragraph | 9 | | substring | "sword inside a circle" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 9]" | | inBounds | true | | expectedText | "the sword inside a circle" | | locationAccurate | false |
| | closestExpected | | entry | "6006" | | detail | "logo" | | summary | "Blackthorn Security's logo is a thorned branch inside a shield per codex, but Kai says a sword inside a circle." |
| | reason | "entry mismatch: got \"4406\", expected \"6006\"" |
| | 26 | | parsed | | entry | "4412" | | detail | "age" | | explanation | "The codex states Aurora is \"25,\" but the text does not contradict this." | | paragraph | 10 | | substring | "pulse in her pocket" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 10]" | | inBounds | true | | expectedText | "" | | locationAccurate | false |
|
| | 27 | | parsed | | entry | "4412" | | detail | "HeartstonePendant" | | explanation | "The codex states the Heartstone is \"deep crimson,\" but the text describes it as \"golden chain tangled in her fingers, the crimson stone glowing brighter.\"" | | paragraph | 10 | | substring | "the Heartstone" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 10]" | | inBounds | true | | expectedText | "" | | locationAccurate | false |
|
| | 28 | | parsed | | entry | "4403" | | detail | "master" | | explanation | "The codex states the master of the Somnian Cult is \"Prince Asmodeus,\" but the text describes it as \"Prince Lilith.\"" | | paragraph | 11 | | substring | "Prince Lilith" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 11]" | | inBounds | true | | expectedText | "Prince Lilith, demands more dreamers" | | locationAccurate | false |
| | closestExpected | | entry | "6003" | | detail | "master" | | summary | "The Somnian Cult serves Prince Asmodeus per codex, but Isolde says Prince Lilith." |
| | reason | "entry mismatch: got \"4403\", expected \"6003\"" |
| | 29 | | parsed | | entry | "4402" | | detail | "ruler" | | explanation | "The codex states the ruler of Avaros is \"Prince Mammon,\" but the text does not contradict Lucien's statement about the Court shifting from Dymas to Irath." | | paragraph | 12 | | substring | "Prince Mammon" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 12]" | | inBounds | true | | expectedText | "Prince Belphegor's agents are kidnapping humans" | | locationAccurate | false |
| | closestExpected | | entry | "855" | | detail | "ruler" | | summary | "Avaros is Prince Mammon's realm per codex, but Tomás says Prince Belphegor's agents operate there." |
| | reason | "entry mismatch: got \"4402\", expected \"855\"" |
| | 30 | | parsed | | entry | "4404" | | detail | "DreamDust" | | explanation | "The codex states Dream Dust is \"fine silver powder,\" but the text describes it as \"spread Dream Dust through the city — stored in little red glass vials, sealed with white wax.\"" | | paragraph | 13 | | substring | "Dream Dust" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 13]" | | inBounds | true | | expectedText | "" | | locationAccurate | false |
|
| | 31 | | parsed | | entry | "4405" | | detail | "solsticeEffect" | | explanation | "The codex states the Veil weakens during the winter solstice, but the text mentions the solstice as a deadline for action." | | paragraph | 14 | | substring | "before the solstice" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 14]" | | inBounds | true | | expectedText | "" | | locationAccurate | false |
|
| | 32 | | parsed | | entry | "4406" | | detail | "location" | | explanation | "The codex states The Veil Market is \"abandoned Tube station beneath Camden,\" but the text mentions \"Shoreditch.\"" | | paragraph | 15 | | substring | "Shoreditch" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 15]" | | inBounds | true | | expectedText | "The Fae Grove in Hyde Park" | | locationAccurate | false |
| | closestExpected | | entry | "861" | | detail | "parkLocation" | | summary | "The Fae Grove is in Richmond Park per codex, but the passage says Hyde Park." |
| | reason | "entry mismatch: got \"4406\", expected \"861\"" |
| | 33 | | parsed | | entry | "4404" | | detail | "bindingSalts" | | explanation | "The codex does not specify the origin of binding salts, but the text implies they are from Yasmin's shop." | | paragraph | 13 | | substring | "binding salts" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 13]" | | inBounds | true | | expectedText | "" | | locationAccurate | false |
|
| | 34 | | parsed | | entry | "4404" | | detail | "sealMaterial" | | explanation | "The codex does not specify Dream Dust's seal material; the text describes it as \"white wax.\"" | | paragraph | 13 | | substring | "white wax" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 13]" | | inBounds | true | | expectedText | "sealed with white wax" | | locationAccurate | false |
| | closestExpected | | entry | "2005" | | detail | "sealMaterial" | | summary | "Dream Dust vials are sealed with black wax per codex, but Isolde says white wax." |
| | reason | "entry mismatch: got \"4404\", expected \"2005\"" |
|
| |
| 25.53% | Precision | True positives: 12/47 | | totalReported | 47 | | truePositives | 12 | | reportedDetails | | 0 | | parsed | | entry | "4418" | | detail | "eyeColor" | | explanation | "The codex states Nyx's eyes are \"faintly glowing violet,\" but the text describes them as \"pale blue.\"" | | paragraph | 1 | | substring | "her pale blue eyes, unblinking" |
| | status | "true_positive" | | matchedExpected | | entry | "4418" | | detail | "eyeColor" | | summary | "Nyx has violet eyes per codex, but the passage says blue." |
| | location | | extractedText | "her pale blue eyes, unblinking" | | inBounds | true | | expectedText | "their glowing blue eyes" | | locationAccurate | false |
|
| | 1 | | parsed | | entry | "4418" | | detail | "age" | | explanation | "The codex states Nyx is \"ageless,\" not three hundred years old." | | paragraph | 1 | | substring | "three-hundred-year-old Half-Fae body" |
| | status | "false_positive" | | location | | extractedText | "three-hundred-year-old Half-Fae body" | | inBounds | true | | expectedText | "their glowing blue eyes" | | locationAccurate | false |
| | closestExpected | | entry | "4418" | | detail | "eyeColor" | | summary | "Nyx has violet eyes per codex, but the passage says blue." |
| | reason | "detail mismatch: got \"age\", expected \"eyeColor\"" |
| | 2 | | parsed | | entry | "4424" | | detail | "hair" | | explanation | "The codex states Isolde's hair is \"silver, reaching her waist,\" but the text describes it as \"waist-length,\" which could imply a shorter length unless interpreted differently. However, the context of \"stirring in a breeze that didn't exist outside the boundary\" suggests a longer length, but the codex explicitly states \"reaching her waist.\"" | | paragraph | 1 | | substring | "her waist-length silver hair" |
| | status | "false_positive" | | location | | extractedText | "her waist-length silver hair" | | inBounds | true | | expectedText | "Her pale blue eyes, unblinking" | | locationAccurate | false |
| | closestExpected | | entry | "4424" | | detail | "eyeColor" | | summary | "Isolde has pale lavender eyes per codex, but the passage says pale blue eyes." |
| | reason | "detail mismatch: got \"hair\", expected \"eyeColor\"" |
| | 3 | | parsed | | entry | "4424" | | detail | "eyeColor" | | explanation | "The codex states Isolde's eyes are \"pale lavender,\" but the text describes them as \"pale blue.\"" | | paragraph | 1 | | substring | "her pale blue eyes" |
| | status | "true_positive" | | matchedExpected | | entry | "4424" | | detail | "eyeColor" | | summary | "Isolde has pale lavender eyes per codex, but the passage says pale blue eyes." |
| | location | | extractedText | "her pale blue eyes" | | inBounds | true | | expectedText | "Her pale blue eyes, unblinking" | | locationAccurate | true |
|
| | 4 | | parsed | | entry | "4424" | | detail | "footprints" | | explanation | "The codex states Isolde \"leaves no footprints when she walks.\"" | | paragraph | 1 | | substring | "her bare feet leaving clear prints" |
| | status | "true_positive" | | matchedExpected | | entry | "4424" | | detail | "footprints" | | summary | "Isolde leaves no footprints per codex, but the passage says she leaves clear prints." |
| | location | | extractedText | "[not found in paragraph 1]" | | inBounds | true | | expectedText | "her bare feet leaving clear prints in the soft earth" | | locationAccurate | false |
|
| | 5 | | parsed | | entry | "4424" | | detail | "speech" | | explanation | "The codex states she \"speaks in riddles,\" but the text does not contradict this." | | paragraph | 1 | | substring | "her speech" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 1]" | | inBounds | true | | expectedText | "Her pale blue eyes, unblinking" | | locationAccurate | false |
| | closestExpected | | entry | "4424" | | detail | "eyeColor" | | summary | "Isolde has pale lavender eyes per codex, but the passage says pale blue eyes." |
| | reason | "detail mismatch: got \"speech\", expected \"eyeColor\"" |
| | 6 | | parsed | | entry | "4424" | | detail | "appearance" | | explanation | "The codex states she is \"ethereal, ageless,\" which aligns with the text." | | paragraph | 1 | | substring | "ethereal, ageless" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 1]" | | inBounds | true | | expectedText | "Her pale blue eyes, unblinking" | | locationAccurate | false |
| | closestExpected | | entry | "4424" | | detail | "eyeColor" | | summary | "Isolde has pale lavender eyes per codex, but the passage says pale blue eyes." |
| | reason | "detail mismatch: got \"appearance\", expected \"eyeColor\"" |
| | 7 | | parsed | | entry | "4424" | | detail | "compulsion" | | explanation | "The codex states she \"cannot lie (Fae compulsion) but can mislead,\" which aligns with the text." | | paragraph | 1 | | substring | "cannot lie" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 1]" | | inBounds | true | | expectedText | "Her pale blue eyes, unblinking" | | locationAccurate | false |
| | closestExpected | | entry | "4424" | | detail | "eyeColor" | | summary | "Isolde has pale lavender eyes per codex, but the passage says pale blue eyes." |
| | reason | "detail mismatch: got \"compulsion\", expected \"eyeColor\"" |
| | 8 | | parsed | | entry | "4414" | | detail | "hair" | | explanation | "The codex states Eva's hair is \"curly red,\" which matches the text." | | paragraph | 2 | | substring | "her curly red hair" |
| | status | "false_positive" | | location | | extractedText | "her curly red hair" | | inBounds | true | | expectedText | "Her square glasses kept fogging" | | locationAccurate | false |
| | closestExpected | | entry | "4414" | | detail | "glasses" | | summary | "Eva wears round glasses per codex, but the passage says square glasses." |
| | reason | "detail mismatch: got \"hair\", expected \"glasses\"" |
| | 9 | | parsed | | entry | "4414" | | detail | "glasses" | | explanation | "The codex states Eva wears \"round glasses,\" but the text describes them as \"square.\"" | | paragraph | 2 | | substring | "her square glasses kept fogging" |
| | status | "true_positive" | | matchedExpected | | entry | "4414" | | detail | "glasses" | | summary | "Eva wears round glasses per codex, but the passage says square glasses." |
| | location | | extractedText | "her square glasses kept fogging" | | inBounds | true | | expectedText | "Her square glasses kept fogging" | | locationAccurate | true |
|
| | 10 | | parsed | | entry | "4414" | | detail | "satchel" | | explanation | "The codex states Eva's satchel is \"worn leather,\" which matches the text." | | paragraph | 2 | | substring | "clutching her leather satchel" |
| | status | "false_positive" | | location | | extractedText | "clutching her leather satchel" | | inBounds | true | | expectedText | "Her square glasses kept fogging" | | locationAccurate | false |
| | closestExpected | | entry | "4414" | | detail | "glasses" | | summary | "Eva wears round glasses per codex, but the passage says square glasses." |
| | reason | "detail mismatch: got \"satchel\", expected \"glasses\"" |
| | 11 | | parsed | | entry | "4416" | | detail | "hair" | | explanation | "The codex states Father Cormac's hair is \"thinning ginger,\" which matches the text." | | paragraph | 3 | | substring | "thinning ginger" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 3]" | | inBounds | true | | expectedText | "his natural black hair falling into his face" | | locationAccurate | false |
| | closestExpected | | entry | "4420" | | detail | "hair" | | summary | "Kai has dyed electric-blue hair per codex, but the passage says natural black hair." |
| | reason | "entry mismatch: got \"4416\", expected \"4420\"" |
| | 12 | | parsed | | entry | "4416" | | detail | "eyeColor" | | explanation | "The codex states Father Cormac's eyes are \"pale blue,\" but the text describes them as \"dark brown.\"" | | paragraph | 3 | | substring | "dark brown eyes" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 3]" | | inBounds | true | | expectedText | "Her pale blue eyes, unblinking" | | locationAccurate | false |
| | closestExpected | | entry | "4424" | | detail | "eyeColor" | | summary | "Isolde has pale lavender eyes per codex, but the passage says pale blue eyes." |
| | reason | "entry mismatch: got \"4416\", expected \"4424\"" |
| | 13 | | parsed | | entry | "4416" | | detail | "rosary" | | explanation | "The codex states his rosary is \"rowan wood beads,\" but the text describes it as \"cedar.\"" | | paragraph | 3 | | substring | "cedar rosary beads" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 3]" | | inBounds | true | | expectedText | "his cedar rosary beads" | | locationAccurate | false |
| | closestExpected | | entry | "4422" | | detail | "rosary" | | summary | "Cormac carries a rowan wood rosary per codex, but the passage says cedar." |
| | reason | "entry mismatch: got \"4416\", expected \"4422\"" |
| | 14 | | parsed | | entry | "4419" | | detail | "age" | | explanation | "The text mentions the Covenant of Separation from \"1066,\" but the codex states it was signed in \"1215.\"" | | paragraph | 3 | | substring | "1066" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 3]" | | inBounds | true | | expectedText | "her oak walking stick" | | locationAccurate | false |
| | closestExpected | | entry | "4419" | | detail | "walkingStick" | | summary | "Maggie carries a blackthorn stick per codex, but the passage says oak." |
| | reason | "detail mismatch: got \"age\", expected \"walkingStick\"" |
| | 15 | | parsed | | entry | "4423" | | detail | "birthplace" | | explanation | "The text mentions \"Chinatown\" but does not contradict Wei-Lin's location. However, the codex states Wei-Lin's headquarters are in \"Hong Kong\" in his backstory, and the text does not align with his role as a noodle shop owner in London." | | paragraph | 4 | | substring | "Chinatown" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 4]" | | inBounds | true | | expectedText | "the dragon tattoo on his chest" | | locationAccurate | false |
| | closestExpected | | entry | "4423" | | detail | "tattoo" | | summary | "Wei-Lin's dragon tattoo covers his back per codex, but the passage says chest." |
| | reason | "detail mismatch: got \"birthplace\", expected \"tattoo\"" |
| | 16 | | parsed | | entry | "4423" | | detail | "missingFinger" | | explanation | "The codex states Wei-Lin has a missing finger, which aligns with the text." | | paragraph | 4 | | substring | "missing the tip of his left little finger" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 4]" | | inBounds | true | | expectedText | "the dragon tattoo on his chest" | | locationAccurate | false |
| | closestExpected | | entry | "4423" | | detail | "tattoo" | | summary | "Wei-Lin's dragon tattoo covers his back per codex, but the passage says chest." |
| | reason | "detail mismatch: got \"missingFinger\", expected \"tattoo\"" |
| | 17 | | parsed | | entry | "4423" | | detail | "dragonTattoo" | | explanation | "The codex states Wei-Lin has a \"dragon tattoo covering his entire back,\" but the text describes it as \"on his chest.\"" | | paragraph | 4 | | substring | "The edge of the dragon tattoo on his chest" |
| | status | "true_positive" | | matchedExpected | | entry | "4423" | | detail | "tattoo" | | summary | "Wei-Lin's dragon tattoo covers his back per codex, but the passage says chest." |
| | location | | extractedText | "[not found in paragraph 4]" | | inBounds | true | | expectedText | "the dragon tattoo on his chest" | | locationAccurate | false |
|
| | 18 | | parsed | | entry | "4420" | | detail | "hair" | | explanation | "The codex states Kai's hair is \"dyed electric-blue,\" but the text describes it as \"natural black.\"" | | paragraph | 4 | | substring | "natural black hair" |
| | status | "true_positive" | | matchedExpected | | entry | "4420" | | detail | "hair" | | summary | "Kai has dyed electric-blue hair per codex, but the passage says natural black hair." |
| | location | | extractedText | "[not found in paragraph 4]" | | inBounds | true | | expectedText | "his natural black hair falling into his face" | | locationAccurate | false |
|
| | 19 | | parsed | | entry | "4420" | | detail | "headphones" | | explanation | "The text mentions Kai behind a laptop screen, but the codex states he wears \"noise-cancelling headphones\" always around his neck." | | paragraph | 4 | | substring | "laptop screen" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 4]" | | inBounds | true | | expectedText | "his natural black hair falling into his face" | | locationAccurate | false |
| | closestExpected | | entry | "4420" | | detail | "hair" | | summary | "Kai has dyed electric-blue hair per codex, but the passage says natural black hair." |
| | reason | "detail mismatch: got \"headphones\", expected \"hair\"" |
| | 20 | | parsed | | entry | "4422" | | detail | "rosary" | | explanation | "The text does not mention cedar rosary beads for Father Cormac; the codex states it is \"rowan wood.\"" | | paragraph | 5 | | substring | "cedar rosary beads" |
| | status | "true_positive" | | matchedExpected | | entry | "4422" | | detail | "rosary" | | summary | "Cormac carries a rowan wood rosary per codex, but the passage says cedar." |
| | location | | extractedText | "[not found in paragraph 5]" | | inBounds | true | | expectedText | "his cedar rosary beads" | | locationAccurate | false |
|
| | 21 | | parsed | | entry | "4417" | | detail | "birthplace" | | explanation | "The codex states Tomás's birthplace is \"Seville, Spain,\" which matches the text." | | paragraph | 5 | | substring | "Seville" |
| | status | "true_positive" | | matchedExpected | | entry | "4417" | | detail | "birthplace" | | summary | "Tomás was born in Seville per codex, but the passage implies Madrid accent." |
| | location | | extractedText | "[not found in paragraph 5]" | | inBounds | true | | expectedText | "His Madrid accent" | | locationAccurate | false |
|
| | 22 | | parsed | | entry | "4417" | | detail | "scar" | | explanation | "The codex states Tomás has a \"scar running along his left forearm,\" which matches the text." | | paragraph | 5 | | substring | "scar running along his left forearm" |
| | status | "true_positive" | | matchedExpected | | entry | "4417" | | detail | "scar" | | summary | "Tomás has a scar on his left forearm per codex, but the passage says right forearm." |
| | location | | extractedText | "[not found in paragraph 5]" | | inBounds | true | | expectedText | "His scarred right forearm" | | locationAccurate | false |
|
| | 23 | | parsed | | entry | "4417" | | detail | "medallion" | | explanation | "The codex states Tomás wears a \"Saint Christopher medallion,\" which matches the text." | | paragraph | 5 | | substring | "Saint Christopher medallion" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 5]" | | inBounds | true | | expectedText | "His scarred right forearm" | | locationAccurate | false |
| | closestExpected | | entry | "4417" | | detail | "scar" | | summary | "Tomás has a scar on his left forearm per codex, but the passage says right forearm." |
| | reason | "detail mismatch: got \"medallion\", expected \"scar\"" |
| | 24 | | parsed | | entry | "4415" | | detail | "hair" | | explanation | "The codex states Lucien's hair is \"slicked-back platinum blond,\" which matches the text." | | paragraph | 6 | | substring | "slicked-back platinum blond" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 6]" | | inBounds | true | | expectedText | "leaning on his mahogany cane" | | locationAccurate | false |
| | closestExpected | | entry | "4415" | | detail | "cane" | | summary | "Lucien carries an ivory-handled cane per codex, but the passage says mahogany." |
| | reason | "detail mismatch: got \"hair\", expected \"cane\"" |
| | 25 | | parsed | | entry | "4415" | | detail | "cane" | | explanation | "The codex states Lucien's cane is \"ivory-handled,\" but the text describes it as \"mahogany.\"" | | paragraph | 6 | | substring | "mahogany cane" |
| | status | "true_positive" | | matchedExpected | | entry | "4415" | | detail | "cane" | | summary | "Lucien carries an ivory-handled cane per codex, but the passage says mahogany." |
| | location | | extractedText | "[not found in paragraph 6]" | | inBounds | true | | expectedText | "leaning on his mahogany cane" | | locationAccurate | false |
|
| | 26 | | parsed | | entry | "4415" | | detail | "dress" | | explanation | "The codex states Lucien wears \"tailored charcoal suits,\" which aligns with the text." | | paragraph | 6 | | substring | "tailored charcoal suits" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 6]" | | inBounds | true | | expectedText | "leaning on his mahogany cane" | | locationAccurate | false |
| | closestExpected | | entry | "4415" | | detail | "cane" | | summary | "Lucien carries an ivory-handled cane per codex, but the passage says mahogany." |
| | reason | "detail mismatch: got \"dress\", expected \"cane\"" |
| | 27 | | parsed | | entry | "4415" | | detail | "language" | | explanation | "The codex states this, which aligns with the text." | | paragraph | 6 | | substring | "speaks four languages fluently" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 6]" | | inBounds | true | | expectedText | "leaning on his mahogany cane" | | locationAccurate | false |
| | closestExpected | | entry | "4415" | | detail | "cane" | | summary | "Lucien carries an ivory-handled cane per codex, but the passage says mahogany." |
| | reason | "detail mismatch: got \"language\", expected \"cane\"" |
| | 28 | | parsed | | entry | "4405" | | detail | "foundingYear" | | explanation | "The text does not mention the founding year of the Wardens, but the codex states it was \"1215.\" The text does not contradict this." | | paragraph | 6 | | substring | "1215" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 6]" | | inBounds | true | | expectedText | "The Wardens were founded in 1066" | | locationAccurate | false |
| | closestExpected | | entry | "6001" | | detail | "foundingYear" | | summary | "The Wardens were founded in 1215 per codex, but Maggie says 1066." |
| | reason | "entry mismatch: got \"4405\", expected \"6001\"" |
| | 29 | | parsed | | entry | "4421" | | detail | "hair" | | explanation | "The codex states Yasmin's hair is \"long wavy dark,\" which matches the text." | | paragraph | 7 | | substring | "long wavy dark" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 7]" | | inBounds | true | | expectedText | "tattoo on her right arm" | | locationAccurate | false |
| | closestExpected | | entry | "4421" | | detail | "tattoo" | | summary | "Yasmin's flame serpent tattoo is on her left arm per codex, but the passage says right arm." |
| | reason | "detail mismatch: got \"hair\", expected \"tattoo\"" |
| | 30 | | parsed | | entry | "4421" | | detail | "tattoo" | | explanation | "The codex states Yasmin has a \"flame serpent tattoo coiling up her left arm,\" which matches the text." | | paragraph | 7 | | substring | "flame serpent tattoo coiling" |
| | status | "true_positive" | | matchedExpected | | entry | "4421" | | detail | "tattoo" | | summary | "Yasmin's flame serpent tattoo is on her left arm per codex, but the passage says right arm." |
| | location | | extractedText | "[not found in paragraph 7]" | | inBounds | true | | expectedText | "tattoo on her right arm" | | locationAccurate | false |
|
| | 31 | | parsed | | entry | "4421" | | detail | "scent" | | explanation | "The codex states Yasmin's scent is \"faintly of sandalwood and burnt sage,\" which matches the text." | | paragraph | 7 | | substring | "faintly of sandalwood and burnt sage" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 7]" | | inBounds | true | | expectedText | "tattoo on her right arm" | | locationAccurate | false |
| | closestExpected | | entry | "4421" | | detail | "tattoo" | | summary | "Yasmin's flame serpent tattoo is on her left arm per codex, but the passage says right arm." |
| | reason | "detail mismatch: got \"scent\", expected \"tattoo\"" |
| | 32 | | parsed | | entry | "4422" | | detail | "hair" | | explanation | "The codex states Father Cormac's hair is \"thinning ginger,\" which aligns with the text." | | paragraph | 8 | | substring | "dark brown eyes" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 8]" | | inBounds | true | | expectedText | "his dark brown eyes troubled" | | locationAccurate | false |
| | closestExpected | | entry | "4422" | | detail | "eyeColor" | | summary | "Father Cormac has pale blue eyes per codex, but the passage says dark brown eyes." |
| | reason | "detail mismatch: got \"hair\", expected \"eyeColor\"" |
| | 33 | | parsed | | entry | "4422" | | detail | "rosary" | | explanation | "The text does not mention cedar rosary beads; the codex states it is \"rowan wood.\"" | | paragraph | 8 | | substring | "cedar rosary beads" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 8]" | | inBounds | true | | expectedText | "his dark brown eyes troubled" | | locationAccurate | false |
| | closestExpected | | entry | "4422" | | detail | "eyeColor" | | summary | "Father Cormac has pale blue eyes per codex, but the passage says dark brown eyes." |
| | reason | "detail mismatch: got \"rosary\", expected \"eyeColor\"" |
| | 34 | | parsed | | entry | "4422" | | detail | "collar" | | explanation | "The codex states Father Cormac wears a \"clerical collar,\" which matches the text." | | paragraph | 8 | | substring | "clerical collar" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 8]" | | inBounds | true | | expectedText | "his dark brown eyes troubled" | | locationAccurate | false |
| | closestExpected | | entry | "4422" | | detail | "eyeColor" | | summary | "Father Cormac has pale blue eyes per codex, but the passage says dark brown eyes." |
| | reason | "detail mismatch: got \"collar\", expected \"eyeColor\"" |
| | 35 | | parsed | | entry | "4422" | | detail | "complexion" | | explanation | "The codex states his complexion is \"ruddy,\" which matches the text." | | paragraph | 8 | | substring | "ruddy" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 8]" | | inBounds | true | | expectedText | "his dark brown eyes troubled" | | locationAccurate | false |
| | closestExpected | | entry | "4422" | | detail | "eyeColor" | | summary | "Father Cormac has pale blue eyes per codex, but the passage says dark brown eyes." |
| | reason | "detail mismatch: got \"complexion\", expected \"eyeColor\"" |
| | 36 | | parsed | | entry | "4406" | | detail | "logo" | | explanation | "The codex states Blackthorn's logo is a \"thorned branch inside a shield,\" but the text describes it as \"sword inside a circle.\"" | | paragraph | 9 | | substring | "sword inside a circle" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 9]" | | inBounds | true | | expectedText | "the sword inside a circle" | | locationAccurate | false |
| | closestExpected | | entry | "6006" | | detail | "logo" | | summary | "Blackthorn Security's logo is a thorned branch inside a shield per codex, but Kai says a sword inside a circle." |
| | reason | "entry mismatch: got \"4406\", expected \"6006\"" |
| | 37 | | parsed | | entry | "4412" | | detail | "age" | | explanation | "The codex states Aurora is \"25,\" but the text does not contradict this." | | paragraph | 10 | | substring | "pulse in her pocket" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 10]" | | inBounds | true | | expectedText | "" | | locationAccurate | false |
|
| | 38 | | parsed | | entry | "4412" | | detail | "HeartstonePendant" | | explanation | "The codex states the Heartstone is \"deep crimson,\" but the text describes it as \"golden chain tangled in her fingers, the crimson stone glowing brighter.\"" | | paragraph | 10 | | substring | "the Heartstone" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 10]" | | inBounds | true | | expectedText | "" | | locationAccurate | false |
|
| | 39 | | parsed | | entry | "7002" | | detail | "signedYear" | | explanation | "The text mentions the Covenant of Separation from \"1066,\" but the codex states it was signed in \"1215.\"" | | paragraph | 11 | | substring | "1066" |
| | status | "true_positive" | | matchedExpected | | entry | "7002" | | detail | "signedYear" | | summary | "The Covenant of Separation was signed in 1215 per codex, but Cormac says 1066." |
| | location | | extractedText | "[not found in paragraph 11]" | | inBounds | true | | expectedText | "the old treaty from 1066" | | locationAccurate | false |
|
| | 40 | | parsed | | entry | "4403" | | detail | "master" | | explanation | "The codex states the master of the Somnian Cult is \"Prince Asmodeus,\" but the text describes it as \"Prince Lilith.\"" | | paragraph | 11 | | substring | "Prince Lilith" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 11]" | | inBounds | true | | expectedText | "Prince Lilith, demands more dreamers" | | locationAccurate | false |
| | closestExpected | | entry | "6003" | | detail | "master" | | summary | "The Somnian Cult serves Prince Asmodeus per codex, but Isolde says Prince Lilith." |
| | reason | "entry mismatch: got \"4403\", expected \"6003\"" |
| | 41 | | parsed | | entry | "4402" | | detail | "ruler" | | explanation | "The codex states the ruler of Avaros is \"Prince Mammon,\" but the text does not contradict Lucien's statement about the Court shifting from Dymas to Irath." | | paragraph | 12 | | substring | "Prince Mammon" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 12]" | | inBounds | true | | expectedText | "Prince Belphegor's agents are kidnapping humans" | | locationAccurate | false |
| | closestExpected | | entry | "855" | | detail | "ruler" | | summary | "Avaros is Prince Mammon's realm per codex, but Tomás says Prince Belphegor's agents operate there." |
| | reason | "entry mismatch: got \"4402\", expected \"855\"" |
| | 42 | | parsed | | entry | "4404" | | detail | "DreamDust" | | explanation | "The codex states Dream Dust is \"fine silver powder,\" but the text describes it as \"spread Dream Dust through the city — stored in little red glass vials, sealed with white wax.\"" | | paragraph | 13 | | substring | "Dream Dust" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 13]" | | inBounds | true | | expectedText | "" | | locationAccurate | false |
|
| | 43 | | parsed | | entry | "4405" | | detail | "solsticeEffect" | | explanation | "The codex states the Veil weakens during the winter solstice, but the text mentions the solstice as a deadline for action." | | paragraph | 14 | | substring | "before the solstice" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 14]" | | inBounds | true | | expectedText | "" | | locationAccurate | false |
|
| | 44 | | parsed | | entry | "4406" | | detail | "location" | | explanation | "The codex states The Veil Market is \"abandoned Tube station beneath Camden,\" but the text mentions \"Shoreditch.\"" | | paragraph | 15 | | substring | "Shoreditch" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 15]" | | inBounds | true | | expectedText | "The Fae Grove in Hyde Park" | | locationAccurate | false |
| | closestExpected | | entry | "861" | | detail | "parkLocation" | | summary | "The Fae Grove is in Richmond Park per codex, but the passage says Hyde Park." |
| | reason | "entry mismatch: got \"4406\", expected \"861\"" |
| | 45 | | parsed | | entry | "4404" | | detail | "bindingSalts" | | explanation | "The codex does not specify the origin of binding salts, but the text implies they are from Yasmin's shop." | | paragraph | 13 | | substring | "binding salts" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 13]" | | inBounds | true | | expectedText | "" | | locationAccurate | false |
|
| | 46 | | parsed | | entry | "4404" | | detail | "sealMaterial" | | explanation | "The codex does not specify Dream Dust's seal material; the text describes it as \"white wax.\"" | | paragraph | 13 | | substring | "white wax" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 13]" | | inBounds | true | | expectedText | "sealed with white wax" | | locationAccurate | false |
| | closestExpected | | entry | "2005" | | detail | "sealMaterial" | | summary | "Dream Dust vials are sealed with black wax per codex, but Isolde says white wax." |
| | reason | "entry mismatch: got \"4404\", expected \"2005\"" |
|
| |