| 0 | | parsed | | entry | "4412" | | detail | "eyeColor" | | explanation | "The codex states Aurora's eye color is bright blue, not pale blue." | | paragraph | 1 | | substring | "Her pale blue eyes" |
| | status | "false_positive" | | location | | extractedText | "Her pale blue eyes" | | inBounds | true | | expectedText | "Her pale blue eyes, unblinking" | | locationAccurate | true |
| | closestExpected | | entry | "4424" | | detail | "eyeColor" | | summary | "Isolde has pale lavender eyes per codex, but the passage says pale blue eyes." |
| | reason | "entry mismatch: got \"4412\", expected \"4424\"" |
|
| 1 | | parsed | | entry | "4412" | | detail | "scar" | | explanation | "The codex states Tomás's scar is on his left forearm." | | paragraph | 11 | | substring | "His scarred right forearm" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 11]" | | 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 | "entry mismatch: got \"4412\", expected \"4417\"" |
|
| 2 | | parsed | | entry | "4413" | | detail | "limp" | | explanation | "The codex states Silas has a slight limp in his left leg from an old knee injury, but the limb affected is the left leg; however, the contradiction is that the text references the left knee matching, but wait, the text says \"left knee\" which matches left leg. Actually no contradiction there. Let's skip." | | paragraph | 11 | | substring | "his left knee" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 11]" | | inBounds | true | | expectedText | "" | | locationAccurate | false |
|
|
| 3 | | parsed | | entry | "853" | | detail | "skyColor" | | explanation | "The Fae Grove is in Richmond Park per codex." | | paragraph | 1 | | substring | "Hyde Park" |
| | status | "false_positive" | | location | | extractedText | "Hyde Park" | | inBounds | true | | expectedText | "" | | locationAccurate | true |
|
|
| 4 | | parsed | | entry | "861" | | detail | "parkLocation" | | explanation | "The Fae Grove is in Richmond Park." | | paragraph | 1 | | substring | "Hyde Park" |
| | status | "true_positive" | | matchedExpected | | entry | "861" | | detail | "parkLocation" | | summary | "The Fae Grove is in Richmond Park per codex, but the passage says Hyde Park." |
| | location | | extractedText | "Hyde Park" | | inBounds | true | | expectedText | "The Fae Grove in Hyde Park" | | locationAccurate | true |
|
|
| 5 | | parsed | | entry | "861" | | detail | "standingStones" | | explanation | "The grove has ancient oak standing stones." | | paragraph | 1 | | substring | "elm standing stones" |
| | status | "true_positive" | | matchedExpected | | entry | "861" | | detail | "standingStones" | | summary | "The grove has oak standing stones per codex, but the passage says elm." |
| | location | | extractedText | "elm standing stones" | | inBounds | true | | expectedText | "The ancient elm standing stones" | | locationAccurate | true |
|
|
| 6 | | parsed | | entry | "4424" | | detail | "eyeColor" | | explanation | "Isolde's eye color is pale lavender." | | paragraph | 1 | | substring | "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 | "pale blue eyes" | | inBounds | true | | expectedText | "Her pale blue eyes, unblinking" | | locationAccurate | true |
|
|
| 7 | | parsed | | entry | "4424" | | detail | "footprints" | | explanation | "Isolde leaves no footprints." | | paragraph | 2 | | substring | "clear prints in the soft earth" |
| | 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 2]" | | inBounds | true | | expectedText | "her bare feet leaving clear prints in the soft earth" | | locationAccurate | false |
|
|
| 8 | | parsed | | entry | "2006" | | detail | "material" | | explanation | "The blade is always cold to the touch." | | paragraph | 3 | | substring | "Fae-Forged Blade warm at her hip" |
| | status | "true_positive" | | matchedExpected | | entry | "2006" | | detail | "material" | | summary | "Fae-Forged Blades are moonsilver per codex, but Wei-Lin says bronze." |
| | location | | extractedText | "[not found in paragraph 3]" | | inBounds | true | | expectedText | "bronze daggers, they say" | | locationAccurate | false |
|
|
| 9 | | parsed | | entry | "4414" | | detail | "glasses" | | explanation | "Eva wears round glasses." | | paragraph | 3 | | substring | "square glasses" |
| | status | "true_positive" | | matchedExpected | | entry | "4414" | | detail | "glasses" | | summary | "Eva wears round glasses per codex, but the passage says square glasses." |
| | location | | extractedText | "[not found in paragraph 3]" | | inBounds | true | | expectedText | "Her square glasses kept fogging" | | locationAccurate | false |
|
|
| 10 | | parsed | | entry | "4413" | | detail | "signetRing" | | explanation | "Not mentioned in contradiction. Wait." | | paragraph | 3 | | substring | "silver signet ring" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 3]" | | inBounds | true | | expectedText | "" | | locationAccurate | false |
|
|
| 11 | | parsed | | entry | "4415" | | detail | "eyeColor" | | explanation | "Lucien is heterochromatic — one amber, one black." | | paragraph | 6 | | substring | "Both his amber eyes" |
| | status | "true_positive" | | matchedExpected | | entry | "4415" | | detail | "eyeColor" | | summary | "Lucien has heterochromatic eyes (one amber, one black), but the passage says both amber." |
| | location | | extractedText | "[not found in paragraph 6]" | | inBounds | true | | expectedText | "Both his amber eyes were fixed" | | locationAccurate | false |
|
|
| 12 | | parsed | | entry | "4415" | | detail | "cane" | | explanation | "Lucien's cane is ivory-handled." | | 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 |
|
|
| 13 | | parsed | | entry | "4421" | | detail | "tattoo" | | explanation | "The flame serpent tattoo is on her left arm." | | paragraph | 7 | | substring | "right arm" |
| | 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 |
|
|
| 14 | | parsed | | entry | "4423" | | detail | "tattoo" | | explanation | "Zhou has a dragon tattoo covering his entire back." | | paragraph | 8 | | substring | "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 8]" | | inBounds | true | | expectedText | "the dragon tattoo on his chest" | | locationAccurate | false |
|
|
| 15 | | parsed | | entry | "4420" | | detail | "hair" | | explanation | "Kai's hair is dyed electric-blue." | | paragraph | 9 | | 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 9]" | | inBounds | true | | expectedText | "his natural black hair falling into his face" | | locationAccurate | false |
|
|
| 16 | | parsed | | entry | "4420" | | detail | "wristTattoo" | | explanation | "Not mentioned, skip." | | paragraph | 9 | | substring | "left wrist" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 9]" | | 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 \"wristTattoo\", expected \"hair\"" |
|
| 17 | | parsed | | entry | "4419" | | detail | "eyeColor" | | explanation | "Maggie's eye color is sharp grey." | | paragraph | 10 | | substring | "keen green eyes" |
| | status | "true_positive" | | matchedExpected | | entry | "4419" | | detail | "eyeColor" | | summary | "Maggie has grey eyes per codex, but the passage says green." |
| | location | | extractedText | "[not found in paragraph 10]" | | inBounds | true | | expectedText | "Her keen green eyes" | | locationAccurate | false |
|
|
| 18 | | parsed | | entry | "4419" | | detail | "walkingStick" | | explanation | "Maggie's walking stick is blackthorn." | | paragraph | 10 | | substring | "oak walking stick" |
| | status | "true_positive" | | matchedExpected | | entry | "4419" | | detail | "walkingStick" | | summary | "Maggie carries a blackthorn stick per codex, but the passage says oak." |
| | location | | extractedText | "[not found in paragraph 10]" | | inBounds | true | | expectedText | "her oak walking stick" | | locationAccurate | false |
|
|
| 19 | | parsed | | entry | "4416" | | detail | "eyeColor" | | explanation | "Cormac's eye color is pale blue." | | paragraph | 10 | | substring | "dark brown eyes" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 10]" | | 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\"" |
|
| 20 | | parsed | | entry | "4422" | | detail | "rosary" | | explanation | "Cormac's rosary is made of rowan wood beads." | | paragraph | 6 | | 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 6]" | | inBounds | true | | expectedText | "his cedar rosary beads" | | locationAccurate | false |
|
|
| 21 | | parsed | | entry | "4417" | | detail | "birthplace" | | explanation | "Tomás was born in Seville, Spain." | | paragraph | 11 | | substring | "Madrid accent" |
| | 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 11]" | | inBounds | true | | expectedText | "His Madrid accent" | | locationAccurate | false |
|
|
| 22 | | parsed | | entry | "4417" | | detail | "scar" | | explanation | "Tomás's scar is on his left forearm." | | paragraph | 11 | | substring | "scarred right 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 11]" | | inBounds | true | | expectedText | "His scarred right forearm" | | locationAccurate | false |
|
|
| 23 | | parsed | | entry | "4415" | | detail | "backstory" | | explanation | "Lucien's father is a demon, not a human father referred to this way, but more specifically, the contradiction is not direct. However, \"my father— he says\" is okay. But wait, there is no direct contradiction except possibly implying a human father, but let's check. The text says \"my father— he says...\" which could be the demon father. Not a clear contradiction." | | paragraph | 6 | | substring | "my father" |
| | 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 \"backstory\", expected \"cane\"" |
|
| 24 | | parsed | | entry | "4418" | | detail | "eyeColor" | | explanation | "Nyx's eyes are faintly glowing violet." | | paragraph | 12 | | substring | "glowing blue eyes" |
| | status | "true_positive" | | matchedExpected | | entry | "4418" | | detail | "eyeColor" | | summary | "Nyx has violet eyes per codex, but the passage says blue." |
| | location | | extractedText | "[not found in paragraph 12]" | | inBounds | true | | expectedText | "their glowing blue eyes" | | locationAccurate | false |
|
|
| 25 | | parsed | | entry | "2001" | | detail | "gemstoneColor" | | explanation | "The gemstone is deep crimson, but wait, the chain is golden? Let's check." | | paragraph | 13 | | substring | "crimson stone" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 13]" | | inBounds | true | | expectedText | "the golden chain tangled in her fingers" | | locationAccurate | false |
| | closestExpected | | entry | "2001" | | detail | "chainMaterial" | | summary | "The Heartstone Pendant has a silver chain per codex, but the passage says golden chain." |
| | reason | "detail mismatch: got \"gemstoneColor\", expected \"chainMaterial\"" |
|
| 26 | | parsed | | entry | "2001" | | detail | "chainMaterial" | | explanation | "The Heartstone has a silver chain." | | paragraph | 13 | | substring | "golden chain" |
| | status | "true_positive" | | matchedExpected | | entry | "2001" | | detail | "chainMaterial" | | summary | "The Heartstone Pendant has a silver chain per codex, but the passage says golden chain." |
| | location | | extractedText | "[not found in paragraph 13]" | | inBounds | true | | expectedText | "the golden chain tangled in her fingers" | | locationAccurate | false |
|
|
| 27 | | parsed | | entry | "2002" | | detail | "pageMaterial" | | explanation | "The Dream Dust is stored in small cobalt-blue glass vials sealed with black wax." | | paragraph | 2 | | substring | "Dream Dust... red glass vials, sealed with white wax" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 2]" | | inBounds | true | | expectedText | "bronze daggers, they say" | | locationAccurate | false |
| | closestExpected | | entry | "2006" | | detail | "material" | | summary | "Fae-Forged Blades are moonsilver per codex, but Wei-Lin says bronze." |
| | reason | "entry mismatch: got \"2002\", expected \"2006\"" |
|
| 28 | | parsed | | entry | "2005" | | detail | "containerColor" | | explanation | "Dream Dust vials are cobalt-blue." | | paragraph | 2 | | substring | "red glass vials" |
| | status | "true_positive" | | matchedExpected | | entry | "2005" | | detail | "containerColor" | | summary | "Dream Dust is stored in cobalt-blue vials per codex, but Isolde says red glass vials." |
| | location | | extractedText | "[not found in paragraph 2]" | | inBounds | true | | expectedText | "little red glass vials" | | locationAccurate | false |
|
|
| 29 | | parsed | | entry | "2005" | | detail | "sealMaterial" | | explanation | "The seal is black wax." | | paragraph | 2 | | substring | "white wax" |
| | status | "true_positive" | | matchedExpected | | entry | "2005" | | detail | "sealMaterial" | | summary | "Dream Dust vials are sealed with black wax per codex, but Isolde says white wax." |
| | location | | extractedText | "[not found in paragraph 2]" | | inBounds | true | | expectedText | "sealed with white wax" | | locationAccurate | false |
|
|
| 30 | | parsed | | entry | "855" | | detail | "ruler" | | explanation | "The master of the Somnian Cult is Prince Asmodeus; also Dymas ruler is wrong." | | paragraph | 2 | | substring | "Prince Lilith" |
| | status | "true_positive" | | matchedExpected | | entry | "855" | | detail | "ruler" | | summary | "Avaros is Prince Mammon's realm per codex, but Tomás says Prince Belphegor's agents operate there." |
| | location | | extractedText | "[not found in paragraph 2]" | | inBounds | true | | expectedText | "Prince Belphegor's agents are kidnapping humans" | | locationAccurate | false |
|
|
| 31 | | parsed | | entry | "853" | | detail | "ruler" | | explanation | "Wait, Belphegor rules Dymas. The text says \"Prince Belphegor's agents\" for Avaros? Let's check paragraph 11." | | paragraph | 2 | | substring | "Prince Belphegor" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 2]" | | 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 \"853\", expected \"855\"" |
|
| 32 | | parsed | | entry | "855" | | detail | "ruler" | | explanation | "Avaros ruler is Prince Mammon — this is correct." | | paragraph | 6 | | substring | "Mammon breaks it daily in Avaros" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 6]" | | inBounds | true | | expectedText | "" | | locationAccurate | false |
|
|
| 33 | | parsed | | entry | "857" | | detail | "ruler" | | explanation | "Not a ruler contradiction." | | paragraph | 6 | | substring | "shifted from Dymas to Irath" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 6]" | | 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 \"857\", expected \"855\"" |
|
| 34 | | parsed | | entry | "7002" | | detail | "signedYear" | | explanation | "The Covenant was signed in 1215." | | paragraph | 6 | | 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 6]" | | inBounds | true | | expectedText | "the old treaty from 1066" | | locationAccurate | false |
|
|
| 35 | | parsed | | entry | "853" | | detail | "ruler" | | explanation | "Avaros is ruled by Mammon; Belphegor rules Dymas." | | paragraph | 11 | | substring | "Prince Belphegor's agents" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 11]" | | 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 \"853\", expected \"855\"" |
|
| 36 | | parsed | | entry | "855" | | detail | "ruler" | | explanation | "Again, Avaros ruler is Mammon." | | paragraph | 11 | | substring | "contract signed in Avaros — said Prince Belphegor" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 11]" | | inBounds | true | | expectedText | "" | | locationAccurate | false |
|
|
| 37 | | parsed | | entry | "4416" | | detail | "watch" | | explanation | "Skip." | | paragraph | 10 | | substring | "Not mentioned" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 10]" | | inBounds | true | | expectedText | "" | | locationAccurate | false |
|
|
| 38 | | parsed | | entry | "6006" | | detail | "logo" | | explanation | "Blackthorn's logo is a thorned branch inside a shield." | | paragraph | 9 | | substring | "sword inside a circle" |
| | status | "true_positive" | | matchedExpected | | 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." |
| | location | | extractedText | "[not found in paragraph 9]" | | inBounds | true | | expectedText | "the sword inside a circle" | | locationAccurate | false |
|
|
| 39 | | parsed | | entry | "6005" | | detail | "employee" | | explanation | "Skip." | | paragraph | 1 | | substring | "Not mentioned" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 1]" | | inBounds | true | | expectedText | "" | | locationAccurate | false |
|
|
| 40 | | parsed | | entry | "4424" | | detail | "speech" | | explanation | "Not a contradiction." | | paragraph | 12 | | substring | "The mortal speaks truth" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 12]" | | 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\"" |
|
| 41 | | parsed | | entry | "861" | | detail | "flora" | | explanation | "Skip." | | paragraph | 1 | | substring | "Not mentioned" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 1]" | | 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 | "detail mismatch: got \"flora\", expected \"parkLocation\"" |
|
| 42 | | parsed | | entry | "7004" | | detail | "freedom" | | explanation | "Contracts can only be freed if destroyed within the realm where signed — this matches. Wait, she destroyed it in Avaros where it was signed, so that's correct." | | paragraph | 11 | | substring | "destroy her contract document while still in Avaros, which broke the bond" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 11]" | | inBounds | true | | expectedText | "" | | locationAccurate | false |
|
|
| 43 | | parsed | | entry | "856" | | detail | "currentLocation" | | explanation | "The Veil Market is beneath Camden (though it moves every full moon). The text says it moved to Shoreditch for this lunar cycle, but the codex says it moves locations every full moon. Wait, but Kai says it's under Camden this month. Wei-Lin says it moved to Shoreditch for this lunar cycle. Since it moves every full moon, both could be wrong depending on the month. But the codex says currentLocation is Camden, but also schedule is moves every full moon. The contradiction is that Wei-Lin says it's under Shoreditch, and Kai corrects him saying Camden this month. But is there a contradiction with the codex? The codex lists currentLocation as abandoned Tube station beneath Camden, but also says it moves every full moon. So if it's this lunar cycle, it could be Shoreditch. However, Kai says \"The market's under Camden this month\" — this might contradict the \"moved to Shoreditch\" but not necessarily the codex if we assume the codex lists the current known location. Actually, since the schedule says it moves every full moon, there is no fixed location contradiction unless we assume the codex lists the current one. Let's check: the codex entry 856 has currentLocation: abandoned Tube station beneath Camden. The text has Kai saying \"Camden\" and Wei-Lin saying \"Shoreditch\". Since the codex states the current location is Camden, Wei-Lin saying Shoreditch contradicts the currentLocation. But Kai corrects him. So Wei-Lin's statement is contradicted by the codex currentLocation, but since Kai corrects it, the text contains a contradiction within itself and against the codex. Let's flag Wei-Lin's statement." | | paragraph | 9 | | substring | "abandoned station under Shoreditch" |
| | status | "true_positive" | | matchedExpected | | entry | "856" | | detail | "currentLocation" | | summary | "The Veil Market is under Camden per codex, but Wei-Lin says Shoreditch." |
| | location | | extractedText | "[not found in paragraph 9]" | | inBounds | true | | expectedText | "abandoned station under Shoreditch" | | locationAccurate | false |
|
|
| 44 | | parsed | | entry | "856" | | detail | "currentLocation" | | explanation | "The Veil Market's current location is beneath Camden." | | paragraph | 9 | | substring | "abandoned station under Shoreditch" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 9]" | | inBounds | true | | expectedText | "" | | locationAccurate | false |
|
|
| 45 | | parsed | | entry | "2006" | | detail | "givenTo" | | explanation | "The blade was given to Aurora by Isolde, but the contradiction is about temperature." | | paragraph | 3 | | substring | "Fae-Forged Blade" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 3]" | | inBounds | true | | expectedText | "the Fae-Forged Blade warm at her hip" | | locationAccurate | false |
| | closestExpected | | entry | "2006" | | detail | "temperature" | | summary | "The Fae-Forged Blade is always cold per codex, but the passage says warm." |
| | reason | "detail mismatch: got \"givenTo\", expected \"temperature\"" |
|
| 46 | | parsed | | entry | "2003" | | detail | "material" | | explanation | "The Fae-Forged Blade is moonsilver, but Wei-Lin refers to bronze daggers that can cut through wards — but he says \"Fae-Forged Blades... bronze daggers\". This contradicts the material of the Fae-Forged Blade (moonsilver). So flag it." | | paragraph | 9 | | substring | "bronze daggers" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 9]" | | 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 \"2003\", expected \"2005\"" |
|
| 47 | | parsed | | entry | "2006" | | detail | "material" | | explanation | "Fae-Forged Blades are made of moonsilver, not bronze." | | paragraph | 9 | | substring | "bronze daggers" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 9]" | | inBounds | true | | expectedText | "the Fae-Forged Blade warm at her hip" | | locationAccurate | false |
| | closestExpected | | entry | "2006" | | detail | "temperature" | | summary | "The Fae-Forged Blade is always cold per codex, but the passage says warm." |
| | reason | "detail mismatch: got \"material\", expected \"temperature\"" |
|
| 48 | | parsed | | entry | "4418" | | detail | "voice" | | explanation | "The codex says Nyx's voice sounds like a whisper carried on the wind — close enough, not a contradiction." | | paragraph | 12 | | substring | "their voice like wind through dead leaves" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 12]" | | 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 \"voice\", expected \"eyeColor\"" |
|
| 49 | | parsed | | entry | "4422" | | detail | "collar" | | explanation | "Skip." | | paragraph | 6 | | substring | "Not mentioned" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 6]" | | 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\"" |
|
| 50 | | parsed | | entry | "4412" | | detail | "hair" | | explanation | "Skip." | | paragraph | 3 | | substring | "Not mentioned" |
| | 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 \"4412\", expected \"4420\"" |
|
| 51 | | parsed | | entry | "4414" | | detail | "nervousHabit" | | explanation | "Skip." | | paragraph | 3 | | substring | "Not mentioned" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 3]" | | 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 \"nervousHabit\", expected \"glasses\"" |
|
| 52 | | parsed | | entry | "4419" | | detail | "glasses" | | explanation | "Skip." | | paragraph | 2 | | substring | "Not mentioned" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 2]" | | 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 \"glasses\", expected \"walkingStick\"" |
|
| 53 | | parsed | | entry | "4421" | | detail | "scent" | | explanation | "Skip." | | paragraph | 7 | | substring | "Not mentioned" |
| | 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\"" |
|
| 54 | | parsed | | entry | "4423" | | detail | "missingFinger" | | explanation | "Skip." | | paragraph | 8 | | substring | "Not mentioned" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 8]" | | 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\"" |
|
| 55 | | parsed | | entry | "4413" | | detail | "beard" | | explanation | "Skip." | | paragraph | 11 | | substring | "Not mentioned" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 11]" | | inBounds | true | | expectedText | "" | | locationAccurate | false |
|
|
| 56 | | parsed | | entry | "4413" | | detail | "eyeColor" | | explanation | "Silas's eyes are hazel — correct." | | paragraph | 11 | | substring | "hazel eyes" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 11]" | | 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 \"4413\", expected \"4424\"" |
|
| 57 | | parsed | | entry | "6001" | | detail | "headquarters" | | explanation | "Skip." | | paragraph | 10 | | substring | "Not mentioned" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 10]" | | 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 | "detail mismatch: got \"headquarters\", expected \"foundingYear\"" |
|
| 58 | | parsed | | entry | "6004" | | detail | "headquarters" | | explanation | "The Parish Guard's headquarters is St. Brigid's Church, Islington." | | paragraph | 11 | | substring | "cathedral in Southwark" |
| | status | "true_positive" | | matchedExpected | | entry | "6004" | | detail | "headquarters" | | summary | "The Parish Guard HQ is St. Brigid's in Islington per codex, but Cormac says Southwark." |
| | location | | extractedText | "[not found in paragraph 11]" | | inBounds | true | | expectedText | "our cathedral in Southwark" | | locationAccurate | false |
|
|
| 59 | | parsed | | entry | "4422" | | detail | "description" | | explanation | "Skip." | | paragraph | 6 | | substring | "Not mentioned" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 6]" | | 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 \"description\", expected \"eyeColor\"" |
|
| 60 | | parsed | | entry | "7001" | | detail | "solsticeEffect" | | explanation | "Not a contradiction." | | paragraph | 13 | | substring | "before the solstice" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 13]" | | inBounds | true | | expectedText | "" | | locationAccurate | false |
|
|
| 61 | | parsed | | entry | "7003" | | detail | "peakActivity" | | explanation | "This matches the codex." | | paragraph | 12 | | substring | "rifts are multiplying... near underground water sources" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 12]" | | inBounds | true | | expectedText | "" | | locationAccurate | false |
|
|
| 62 | | parsed | | entry | "4416" | | detail | "bearing" | | explanation | "Skip." | | paragraph | 10 | | substring | "Not mentioned" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 10]" | | inBounds | true | | expectedText | "" | | locationAccurate | false |
|
|
| 63 | | parsed | | entry | "4415" | | detail | "hair" | | explanation | "Skip." | | paragraph | 6 | | substring | "Not mentioned" |
| | 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\"" |
|
| 64 | | parsed | | entry | "4414" | | detail | "satchel" | | explanation | "Eva's satchel is worn leather — correct." | | paragraph | 3 | | substring | "clutching her leather satchel" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 3]" | | 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\"" |
|
| 65 | | parsed | | entry | "4417" | | detail | "medallion" | | explanation | "Skip." | | paragraph | 11 | | substring | "Not mentioned" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 11]" | | 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\"" |
|
| 66 | | parsed | | entry | "4417" | | detail | "skinTone" | | explanation | "Skip." | | paragraph | 11 | | substring | "Not mentioned" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 11]" | | 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 \"skinTone\", expected \"scar\"" |
|
| 67 | | parsed | | entry | "4420" | | detail | "headphones" | | explanation | "Skip." | | paragraph | 9 | | substring | "Not mentioned" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 9]" | | 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\"" |
|
| 68 | | parsed | | entry | "4420" | | detail | "build" | | explanation | "Skip." | | paragraph | 9 | | substring | "Not mentioned" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 9]" | | 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 \"build\", expected \"hair\"" |
|
| 69 | | parsed | | entry | "4412" | | detail | "age" | | explanation | "This refers to Isolde, not Aurora." | | 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 | "" | | locationAccurate | true |
|
|
| 70 | | parsed | | entry | "2001" | | detail | "origin" | | explanation | "The Heartstone's origin is Dymas." | | paragraph | 13 | | substring | "The Heartstone was forged in Avaros" |
| | status | "true_positive" | | matchedExpected | | entry | "2001" | | detail | "origin" | | summary | "The Heartstone Pendant was forged in Dymas per codex, but Isolde says it was forged in Avaros." |
| | location | | extractedText | "The Heartstone was forged in Avaros" | | inBounds | true | | expectedText | "The Heartstone was forged in Avaros" | | locationAccurate | true |
|
|
| 71 | | parsed | | entry | "2004" | | detail | "creator" | | explanation | "Skip." | | paragraph | 9 | | substring | "Not mentioned" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 9]" | | inBounds | true | | expectedText | "" | | locationAccurate | false |
|
|
| 72 | | parsed | | entry | "2005" | | detail | "color" | | explanation | "Not mentioned directly." | | paragraph | 2 | | substring | "Dream Dust... cutting it" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 2]" | | 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 | "detail mismatch: got \"color\", expected \"sealMaterial\"" |
|
| 73 | | parsed | | entry | "858" | | detail | "cat" | | explanation | "Skip." | | paragraph | 3 | | substring | "Not mentioned" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 3]" | | 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 \"858\", expected \"861\"" |
|
| 74 | | parsed | | entry | "858" | | detail | "security" | | explanation | "Skip." | | paragraph | 3 | | substring | "Not mentioned" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 3]" | | inBounds | true | | expectedText | "" | | locationAccurate | false |
|
|
| 75 | | parsed | | entry | "853" | | detail | "description" | | explanation | "Not a contradiction." | | paragraph | 6 | | substring | "Dymas to Irath" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 6]" | | inBounds | true | | expectedText | "" | | locationAccurate | false |
|
|
| 76 | | parsed | | entry | "854" | | detail | "signColor" | | explanation | "Skip." | | paragraph | 11 | | substring | "Not mentioned" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 11]" | | inBounds | true | | expectedText | "" | | locationAccurate | false |
|
|
| 77 | | parsed | | entry | "854" | | detail | "secretRoom" | | explanation | "Skip." | | paragraph | 11 | | substring | "Not mentioned" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 11]" | | inBounds | true | | expectedText | "" | | locationAccurate | false |
|
|
| 78 | | parsed | | entry | "859" | | detail | "atmosphere" | | explanation | "Skip." | | paragraph | 2 | | substring | "Not mentioned" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 2]" | | inBounds | true | | expectedText | "" | | locationAccurate | false |
|
|
| 79 | | parsed | | entry | "860" | | detail | "password" | | explanation | "Skip." | | paragraph | 7 | | substring | "Not mentioned" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 7]" | | inBounds | true | | expectedText | "" | | locationAccurate | false |
|
|
| 80 | | parsed | | entry | "862" | | detail | "ruler" | | explanation | "Luxuria's ruler is Prince Lilith, but the Somnian Cult's master is Prince Asmodeus. The text assigns Lilith to the Somnian Cult, which is wrong." | | paragraph | 2 | | substring | "Prince Lilith" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 2]" | | 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 \"862\", expected \"855\"" |
|
| 81 | | parsed | | entry | "859" | | detail | "ruler" | | explanation | "The Somnian Cult's master should be Prince Asmodeus." | | paragraph | 2 | | substring | "Prince Lilith" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 2]" | | 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 \"859\", expected \"855\"" |
|
| 82 | | parsed | | entry | "4424" | | detail | "appearance" | | explanation | "Not a contradiction." | | paragraph | 1 | | substring | "ageless face" |
| | 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\"" |
|
| 83 | | parsed | | entry | "4424" | | detail | "compulsion" | | explanation | "Skip." | | paragraph | 1 | | substring | "Not mentioned" |
| | 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\"" |
|
| 84 | | parsed | | entry | "4413" | | detail | "description" | | explanation | "Skip." | | paragraph | 11 | | substring | "Not mentioned" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 11]" | | inBounds | true | | expectedText | "" | | locationAccurate | false |
|
|
| 85 | | parsed | | entry | "4421" | | detail | "description" | | explanation | "Skip." | | paragraph | 7 | | substring | "Not mentioned" |
| | 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 \"description\", expected \"tattoo\"" |
|
| 86 | | parsed | | entry | "4423" | | detail | "description" | | explanation | "Skip." | | paragraph | 8 | | substring | "Not mentioned" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 8]" | | 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 \"description\", expected \"tattoo\"" |
|
| 87 | | parsed | | entry | "4415" | | detail | "dress" | | explanation | "Correct." | | paragraph | 6 | | substring | "charcoal suit" |
| | 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\"" |
|
| 88 | | parsed | | entry | "4415" | | detail | "height" | | explanation | "Skip." | | paragraph | 6 | | substring | "Not mentioned" |
| | 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 \"height\", expected \"cane\"" |
|
| 89 | | parsed | | entry | "4416" | | detail | "height" | | explanation | "Skip." | | paragraph | 10 | | substring | "Not mentioned" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 10]" | | inBounds | true | | expectedText | "" | | locationAccurate | false |
|
|
| 90 | | parsed | | entry | "4416" | | detail | "age" | | explanation | "Skip." | | paragraph | 10 | | substring | "Not mentioned" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 10]" | | inBounds | true | | expectedText | "" | | locationAccurate | false |
|
|
| 91 | | parsed | | entry | "4416" | | detail | "jawline" | | explanation | "Skip." | | paragraph | 10 | | substring | "Not mentioned" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 10]" | | inBounds | true | | expectedText | "" | | locationAccurate | false |
|
|
| 92 | | parsed | | entry | "4413" | | detail | "hair" | | explanation | "Correct." | | paragraph | 11 | | substring | "thinning ginger hair" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 11]" | | 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 \"4413\", expected \"4420\"" |
|
| 93 | | parsed | | entry | "4415" | | detail | "age" | | explanation | "Skip." | | paragraph | 6 | | substring | "Not mentioned" |
| | 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 \"age\", expected \"cane\"" |
|
| 94 | | parsed | | entry | "4417" | | detail | "age" | | explanation | "Skip." | | paragraph | 11 | | substring | "Not mentioned" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 11]" | | 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 \"age\", expected \"scar\"" |
|
| 95 | | parsed | | entry | "4422" | | detail | "height" | | explanation | "Skip." | | paragraph | 6 | | substring | "Not mentioned" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 6]" | | 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 \"height\", expected \"eyeColor\"" |
|
| 96 | | parsed | | entry | "6003" | | detail | "master" | | explanation | "The Somnian Cult's master is Prince Asmodeus." | | paragraph | 2 | | substring | "Prince Lilith" |
| | status | "true_positive" | | matchedExpected | | entry | "6003" | | detail | "master" | | summary | "The Somnian Cult serves Prince Asmodeus per codex, but Isolde says Prince Lilith." |
| | location | | extractedText | "[not found in paragraph 2]" | | inBounds | true | | expectedText | "Prince Lilith, demands more dreamers" | | locationAccurate | false |
|
|