| 0.0000% | Accuracy (recall) | Matched: 3/30, FP: 30 | | parsedCount | 33 | | matched | 3 | | total | 30 | | falsePositives | 30 | | expectedDetails | | 0 | | expected | | entry | "861" | | detail | "parkLocation" | | summary | "The Fae Grove is in Richmond Park per codex, but the passage says Hyde Park." |
| | status | "matched" | | matchedBy | | entry | "861" | | detail | "parkLocation" | | explanation | "The text says the Fae Grove is in Richmond Park, but the codex says the Fae Grove is in Richmond Park, London." | | paragraph | 2 | | substring | "A hidden clearing that exists in a pocket between Earth and the Fae realm." |
| | location | | extractedText | "[not found in paragraph 2]" | | inBounds | true | | expectedText | "The Fae Grove in Hyde Park" | | locationAccurate | false |
|
| | 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 | "missed" | | nearMiss | | parsed | | entry | "4414" | | detail | "eyeColor" | | explanation | "The text says green eyes, but the codex says Eva has green eyes." | | paragraph | 2 | | substring | "her curly red hair escaping from under a wool hat. Her square glasses kept fogging in the grove's strange microclimate." |
| | reason | "entry mismatch: got \"4414\", expected \"4424\"" |
|
| | 3 | | expected | | entry | "4424" | | detail | "footprints" | | summary | "Isolde leaves no footprints per codex, but the passage says she leaves clear prints." |
| | status | "missed" | | nearMiss | | parsed | | entry | "4424" | | detail | "age" | | explanation | "The text says Nyx is 300, but the codex says Nyx is ageless." | | paragraph | 2 | | substring | "Nyx materialized from the shadow of a standing stone, their glowing blue eyes cutting through the twilight." |
| | reason | "detail mismatch: got \"age\", expected \"footprints\"" |
|
| | 4 | | expected | | entry | "2006" | | detail | "temperature" | | summary | "The Fae-Forged Blade is always cold per codex, but the passage says warm." |
| | status | "missed" | | nearMiss | | parsed | | entry | "2006" | | detail | "power" | | explanation | "The text says the Fae-Forged Blade can cut through magical wards, but the codex says the Fae-Forged Blade can cut through magical wards; particularly effective against demons." | | paragraph | 2 | | substring | "A weapon of the Fae Courts, rare and highly covoted." |
| | reason | "detail mismatch: got \"power\", expected \"temperature\"" |
|
| | 5 | | expected | | entry | "4414" | | detail | "glasses" | | summary | "Eva wears round glasses per codex, but the passage says square glasses." |
| | status | "missed" | | nearMiss | | parsed | | entry | "4414" | | detail | "eyeColor" | | explanation | "The text says green eyes, but the codex says Eva has green eyes." | | paragraph | 2 | | substring | "her curly red hair escaping from under a wool hat. Her square glasses kept fogging in the grove's strange microclimate." |
| | reason | "detail mismatch: got \"eyeColor\", expected \"glasses\"" |
|
| | 6 | | expected | | entry | "2005" | | detail | "containerColor" | | summary | "Dream Dust is stored in cobalt-blue vials per codex, but Isolde says red glass vials." |
| | status | "missed" | | nearMiss | | parsed | | entry | "2004" | | detail | "containerColor" | | explanation | "The text says Somnian Dream Dust is stored in small cobalt-blue glass vials, but the codex says Somnian Dream Dust is stored in small cobalt-blue glass vials sealed with black wax." | | paragraph | 2 | | substring | "A narcotic powder harvested from the twilight meadows of Somnia." |
| | reason | "entry mismatch: got \"2004\", expected \"2005\"" |
|
| | 7 | | 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 | "2005" | | detail | "givenTo" | | explanation | "The text says the Fae-Forged Blade was given to Aurora by Isolde, but the codex does not mention this." | | paragraph | 2 | | substring | "A weapon of the Fae Courts, rare and highly coveted." |
| | reason | "detail mismatch: got \"givenTo\", expected \"sealMaterial\"" |
|
| | 8 | | expected | | entry | "6003" | | detail | "master" | | summary | "The Somnian Cult serves Prince Asmodeus per codex, but Isolde says Prince Lilith." |
| | status | "missed" |
| | 9 | | 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 | "4414" | | detail | "eyeColor" | | explanation | "The text says green eyes, but the codex says Eva has green eyes." | | paragraph | 2 | | substring | "her curly red hair escaping from under a wool hat. Her square glasses kept fogging in the grove's strange microclimate." |
| | reason | "entry mismatch: got \"4414\", expected \"4422\"" |
|
| | 10 | | expected | | entry | "4422" | | detail | "rosary" | | summary | "Cormac carries a rowan wood rosary per codex, but the passage says cedar." |
| | status | "missed" | | nearMiss | | parsed | | entry | "4422" | | detail | "age" | | explanation | "The text says Father Cormac is 52, but the codex says Father Cormac is 55." | | paragraph | 2 | | substring | "Father Cormac crossed himself, his dark brown eyes troubled beneath his thinning ginger hair. He gripped his cedar rosary beads tightly." |
| | reason | "detail mismatch: got \"age\", expected \"rosary\"" |
|
| | 11 | | 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 says the Covenant of Separation was signed in 1066, but the codex says it was signed in 1215." | | paragraph | 2 | | substring | "The Covenant of Separation — the old treaty from 1066 — forbids this kind of direct interference." |
| | location | | extractedText | "[not found in paragraph 2]" | | inBounds | true | | expectedText | "the old treaty from 1066" | | locationAccurate | false |
|
| | 12 | | expected | | entry | "6004" | | detail | "headquarters" | | summary | "The Parish Guard HQ is St. Brigid's in Islington per codex, but Cormac says Southwark." |
| | status | "missed" | | nearMiss | | parsed | | entry | "6001" | | detail | "headquarters" | | explanation | "The text says the Wardens' headquarters is Westminster Abbey, but the codex says the Wardens' headquarters is the Westminster Catacombs." | | paragraph | 2 | | substring | "Father Cormac crossed himself, his dark brown eyes troubled beneath his thinning ginger hair. He gripped his cedar rosary beads tightly." |
| | reason | "entry mismatch: got \"6001\", expected \"6004\"" |
|
| | 13 | | expected | | entry | "4415" | | detail | "cane" | | summary | "Lucien carries an ivory-handled cane per codex, but the passage says mahogany." |
| | status | "missed" | | nearMiss | | parsed | | entry | "4415" | | detail | "age" | | explanation | "The text says Lucien is 30, but the codex says Lucien is 32." | | paragraph | 2 | | substring | "Lucien, who had been standing silently at the edge of the grove, spoke at last. His amber eyes were grave." |
| | reason | "detail mismatch: got \"age\", expected \"cane\"" |
|
| | 14 | | 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 | "4414" | | detail | "eyeColor" | | explanation | "The text says green eyes, but the codex says Eva has green eyes." | | paragraph | 2 | | substring | "her curly red hair escaping from under a wool hat. Her square glasses kept fogging in the grove's strange microclimate." |
| | reason | "entry mismatch: got \"4414\", expected \"4415\"" |
|
| | 15 | | 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 | "missed" | | nearMiss | | parsed | | entry | "4421" | | detail | "age" | | explanation | "The text says Yasmin is 32, but the codex says Yasmin is 34." | | paragraph | 2 | | substring | "Yasmin uncorked a small vial and sniffed its contents, her amber eyes narrowing." |
| | reason | "detail mismatch: got \"age\", expected \"tattoo\"" |
|
| | 16 | | expected | | entry | "4423" | | detail | "tattoo" | | summary | "Wei-Lin's dragon tattoo covers his back per codex, but the passage says chest." |
| | status | "missed" | | nearMiss | | parsed | | entry | "4423" | | detail | "age" | | explanation | "The text says Wei-Lin is 45, but the codex says Wei-Lin is 48." | | paragraph | 2 | | substring | "Wei-Lin, leaning against one of the standing stones with his arms folded, grunted in agreement. The edge of the dragon tattoo on his chest was visible above his collar." |
| | reason | "detail mismatch: got \"age\", expected \"tattoo\"" |
|
| | 17 | | expected | | entry | "2006" | | detail | "material" | | summary | "Fae-Forged Blades are moonsilver per codex, but Wei-Lin says bronze." |
| | status | "missed" | | nearMiss | | parsed | | entry | "2006" | | detail | "power" | | explanation | "The text says the Fae-Forged Blade can cut through magical wards, but the codex says the Fae-Forged Blade can cut through magical wards; particularly effective against demons." | | paragraph | 2 | | substring | "A weapon of the Fae Courts, rare and highly covoted." |
| | reason | "detail mismatch: got \"power\", expected \"material\"" |
|
| | 18 | | expected | | entry | "856" | | detail | "currentLocation" | | summary | "The Veil Market is under Camden per codex, but Wei-Lin says Shoreditch." |
| | status | "missed" | | nearMiss | | parsed | | entry | "856" | | detail | "schedule" | | explanation | "The text says the Veil Market moves locations every full moon, but the codex says it moves locations every new moon." | | paragraph | 2 | | substring | "The market's moves locations every full moon." |
| | reason | "detail mismatch: got \"schedule\", expected \"currentLocation\"" |
|
| | 19 | | expected | | entry | "4420" | | detail | "hair" | | summary | "Kai has dyed electric-blue hair per codex, but the passage says natural black hair." |
| | status | "missed" | | nearMiss | | parsed | | entry | "4420" | | detail | "age" | | explanation | "The text says Kai is 21, but the codex says Kai is 22." | | paragraph | 2 | | substring | "Kai, who had been quietly checking medical supplies in his bag, looked up. His scarred right forearm brushed the zipper as he closed it." |
| | reason | "detail mismatch: got \"age\", expected \"hair\"" |
|
| | 20 | | 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 | "6006" | | detail | "alignment" | | explanation | "The text says Blackthorn Security is Lawful Neutral, but the codex says it's Lawful Evil." | | paragraph | 2 | | substring | "Blackthorn Security — a private security company that is secretly a front for Warden hardliners who believe the current order is too lenient." |
| | reason | "detail mismatch: got \"alignment\", expected \"logo\"" |
|
| | 21 | | 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 says Maggie is 70, but the codex says Maggie is 72." | | paragraph | 2 | | substring | "Maggie rapped her oak walking stick against a stone." |
| | reason | "detail mismatch: got \"age\", expected \"walkingStick\"" |
|
| | 22 | | expected | | entry | "4419" | | detail | "eyeColor" | | summary | "Maggie has grey eyes per codex, but the passage says green." |
| | status | "missed" | | nearMiss | | parsed | | entry | "4414" | | detail | "eyeColor" | | explanation | "The text says green eyes, but the codex says Eva has green eyes." | | paragraph | 2 | | substring | "her curly red hair escaping from under a wool hat. Her square glasses kept fogging in the grove's strange microclimate." |
| | reason | "entry mismatch: got \"4414\", expected \"4419\"" |
|
| | 23 | | expected | | entry | "6001" | | detail | "foundingYear" | | summary | "The Wardens were founded in 1215 per codex, but Maggie says 1066." |
| | status | "missed" | | nearMiss | | parsed | | entry | "6001" | | detail | "headquarters" | | explanation | "The text says the Wardens' headquarters is Westminster Abbey, but the codex says the Wardens' headquarters is the Westminster Catacombs." | | paragraph | 2 | | substring | "Father Cormac crossed himself, his dark brown eyes troubled beneath his thinning ginger hair. He gripped his cedar rosary beads tightly." |
| | reason | "detail mismatch: got \"headquarters\", expected \"foundingYear\"" |
|
| | 24 | | expected | | entry | "4417" | | detail | "scar" | | summary | "Tomás has a scar on his left forearm per codex, but the passage says right forearm." |
| | status | "missed" |
| | 25 | | expected | | entry | "4417" | | detail | "birthplace" | | summary | "Tomás was born in Seville per codex, but the passage implies Madrid accent." |
| | status | "missed" |
| | 26 | | expected | | entry | "4418" | | detail | "eyeColor" | | summary | "Nyx has violet eyes per codex, but the passage says blue." |
| | status | "missed" | | nearMiss | | parsed | | entry | "4414" | | detail | "eyeColor" | | explanation | "The text says green eyes, but the codex says Eva has green eyes." | | paragraph | 2 | | substring | "her curly red hair escaping from under a wool hat. Her square glasses kept fogging in the grove's strange microclimate." |
| | reason | "entry mismatch: got \"4414\", expected \"4418\"" |
|
| | 27 | | expected | | entry | "2001" | | detail | "chainMaterial" | | summary | "The Heartstone Pendant has a silver chain per codex, but the passage says golden chain." |
| | status | "missed" | | nearMiss | | parsed | | entry | "2001" | | detail | "gemstoneColor" | | explanation | "The text says the Heartstone Pendant's gemstone is deep crimson, but the codex says the Heartstone Pendant's gemstone is crimson." | | paragraph | 2 | | substring | "The Fae-Forged Blade was warm at her hip. She'd strapped it there that morning, its familiar warmth a comfort against the chill." |
| | reason | "detail mismatch: got \"gemstoneColor\", expected \"chainMaterial\"" |
|
| | 28 | | 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" | | nearMiss | | parsed | | entry | "2001" | | detail | "gemstoneColor" | | explanation | "The text says the Heartstone Pendant's gemstone is deep crimson, but the codex says the Heartstone Pendant's gemstone is crimson." | | paragraph | 2 | | substring | "The Fae-Forged Blade was warm at her hip. She'd strapped it there that morning, its familiar warmth a comfort against the chill." |
| | reason | "detail mismatch: got \"gemstoneColor\", expected \"origin\"" |
|
| | 29 | | 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 | "matched" | | matchedBy | | entry | "855" | | detail | "ruler" | | explanation | "The text says Prince Mammon rules Avaros, but the codex says Mammon is the ruler of Avaros." | | paragraph | 2 | | substring | "A landscape of towering vaults and endless treasure halls. The streets are paved with fool's gold and the air smells of copper. Mortals who enter often become obsessed with hoarding." |
| | location | | extractedText | "[not found in paragraph 2]" | | inBounds | true | | expectedText | "Prince Belphegor's agents are kidnapping humans" | | locationAccurate | false |
|
|
| | falsePositiveDetails | | 0 | | parsed | | entry | "4414" | | detail | "eyeColor" | | explanation | "The text says green eyes, but the codex says Eva has green eyes." | | paragraph | 2 | | substring | "her curly red hair escaping from under a wool hat. Her square glasses kept fogging in the grove's strange microclimate." |
| | status | "false_positive" | | location | | extractedText | "her curly red hair escaping from under a wool hat. Her square glasses kept fogging in the grove's strange microclimate." | | inBounds | true | | expectedText | "Her square glasses kept fogging" | | locationAccurate | true |
| | closestExpected | | entry | "4414" | | detail | "glasses" | | summary | "Eva wears round glasses per codex, but the passage says square glasses." |
| | reason | "detail mismatch: got \"eyeColor\", expected \"glasses\"" |
| | 1 | | parsed | | entry | "4414" | | detail | "age" | | explanation | "The text says Eva is 26, but the codex says Eva is 27." | | paragraph | 2 | | substring | "Eva was beside her, clutching her leather satchel with both hands, her curly red hair escaping from under a wool hat. Her square glasses kept fogging in the grove's strange microclimate." |
| | status | "false_positive" | | location | | extractedText | "Eva was beside her, clutching her leather satchel with both hands, her curly red hair escaping from under a wool hat. Her square glasses kept fogging in the grove's strange microclimate." | | inBounds | true | | expectedText | "Her square glasses kept fogging" | | locationAccurate | true |
| | closestExpected | | entry | "4414" | | detail | "glasses" | | summary | "Eva wears round glasses per codex, but the passage says square glasses." |
| | reason | "detail mismatch: got \"age\", expected \"glasses\"" |
| | 2 | | parsed | | entry | "4415" | | detail | "age" | | explanation | "The text says Lucien is 30, but the codex says Lucien is 32." | | paragraph | 2 | | substring | "Lucien, who had been standing silently at the edge of the grove, spoke at last. His amber eyes were grave." |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 2]" | | 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\"" |
| | 3 | | parsed | | entry | "4418" | | detail | "age" | | explanation | "The text says Isolde is 300, but the codex says Isolde is 300 years old." | | paragraph | 2 | | substring | "Isolde, her waist-length silver hair stirring in a breeze that didn't exist outside the boundary." |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 2]" | | 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\"" |
| | 4 | | parsed | | entry | "4419" | | detail | "age" | | explanation | "The text says Maggie is 70, but the codex says Maggie is 72." | | paragraph | 2 | | substring | "Maggie rapped her oak walking stick against a stone." |
| | 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 \"age\", expected \"walkingStick\"" |
| | 5 | | parsed | | entry | "4420" | | detail | "age" | | explanation | "The text says Kai is 21, but the codex says Kai is 22." | | paragraph | 2 | | substring | "Kai, who had been quietly checking medical supplies in his bag, looked up. His scarred right forearm brushed the zipper as he closed it." |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 2]" | | 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 \"age\", expected \"hair\"" |
| | 6 | | parsed | | entry | "4421" | | detail | "age" | | explanation | "The text says Yasmin is 32, but the codex says Yasmin is 34." | | paragraph | 2 | | substring | "Yasmin uncorked a small vial and sniffed its contents, her amber eyes narrowing." |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 2]" | | 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 \"age\", expected \"tattoo\"" |
| | 7 | | parsed | | entry | "4422" | | detail | "age" | | explanation | "The text says Father Cormac is 52, but the codex says Father Cormac is 55." | | paragraph | 2 | | substring | "Father Cormac crossed himself, his dark brown eyes troubled beneath his thinning ginger hair. He gripped his cedar rosary beads tightly." |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 2]" | | 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 \"age\", expected \"eyeColor\"" |
| | 8 | | parsed | | entry | "4423" | | detail | "age" | | explanation | "The text says Wei-Lin is 45, but the codex says Wei-Lin is 48." | | paragraph | 2 | | substring | "Wei-Lin, leaning against one of the standing stones with his arms folded, grunted in agreement. The edge of the dragon tattoo on his chest was visible above his collar." |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 2]" | | 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 \"age\", expected \"tattoo\"" |
| | 9 | | parsed | | entry | "4424" | | detail | "age" | | explanation | "The text says Nyx is 300, but the codex says Nyx is ageless." | | paragraph | 2 | | substring | "Nyx materialized from the shadow of a standing stone, their glowing blue eyes cutting through the twilight." |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 2]" | | 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 \"age\", expected \"eyeColor\"" |
| | 10 | | parsed | | entry | "6001" | | detail | "headquarters" | | explanation | "The text says the Wardens' headquarters is Westminster Abbey, but the codex says the Wardens' headquarters is the Westminster Catacombs." | | paragraph | 2 | | substring | "Father Cormac crossed himself, his dark brown eyes troubled beneath his thinning ginger hair. He gripped his cedar rosary beads tightly." |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 2]" | | 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\"" |
| | 11 | | parsed | | entry | "6005" | | detail | "role" | | explanation | "The text says Golden Empress Restaurant is a front for supernatural activities, but the codex says it's a neutral meeting ground." | | paragraph | 2 | | substring | "Golden Empress Restaurant — a Cantonese restaurant in Chinatown. Yu-Fei knows about the supernatural world but stays strictly neutral." |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 2]" | | inBounds | true | | expectedText | "" | | locationAccurate | false |
|
| | 12 | | parsed | | entry | "6006" | | detail | "alignment" | | explanation | "The text says Blackthorn Security is Lawful Neutral, but the codex says it's Lawful Evil." | | paragraph | 2 | | substring | "Blackthorn Security — a private security company that is secretly a front for Warden hardliners who believe the current order is too lenient." |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 2]" | | 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 | "detail mismatch: got \"alignment\", expected \"logo\"" |
| | 13 | | parsed | | entry | "7001" | | detail | "appearance" | | explanation | "The text says the Veil shimmers, but the codex says the Veil is invisible to normal humans." | | paragraph | 2 | | substring | "The Veil shimmered — faint shimmering distortion visible only to those with supernatural sight." |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 2]" | | inBounds | true | | expectedText | "" | | locationAccurate | false |
|
| | 14 | | parsed | | entry | "7003" | | detail | "formation" | | explanation | "The text says rifts tend to form near underground water sources, but the codex says rifts tend to form near underground water sources and ley lines." | | paragraph | 2 | | substring | "They tend to form near underground water sources." |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 2]" | | inBounds | true | | expectedText | "" | | locationAccurate | false |
|
| | 15 | | parsed | | entry | "7004" | | detail | "sealingMethod" | | explanation | "The text says Helbound souls are sealed by blood, but the codex says Helbound souls are sealed by blood and recorded in that Prince's domain." | | paragraph | 2 | | substring | "They are sealed by blood and recorded in that Prince's domain." |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 2]" | | inBounds | true | | expectedText | "" | | locationAccurate | false |
|
| | 16 | | parsed | | entry | "7005" | | detail | "reversibility" | | explanation | "The text says the Shade transformation is reversible, but the codex says it's irreversible." | | paragraph | 2 | | substring | "The process by which a living being becomes a Shade." |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 2]" | | inBounds | true | | expectedText | "" | | locationAccurate | false |
|
| | 17 | | parsed | | entry | "854" | | detail | "secretRoom" | | explanation | "The text says The Raven's Nest has a secret room, but the codex does not mention this." | | paragraph | 2 | | substring | "The walls are covered with old maps and black-and-white photographs." |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 2]" | | inBounds | true | | expectedText | "" | | locationAccurate | false |
|
| | 18 | | parsed | | entry | "856" | | detail | "schedule" | | explanation | "The text says the Veil Market moves locations every full moon, but the codex says it moves locations every new moon." | | paragraph | 2 | | substring | "The market's moves locations every full moon." |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 2]" | | inBounds | true | | expectedText | "abandoned station under Shoreditch" | | locationAccurate | false |
| | closestExpected | | entry | "856" | | detail | "currentLocation" | | summary | "The Veil Market is under Camden per codex, but Wei-Lin says Shoreditch." |
| | reason | "detail mismatch: got \"schedule\", expected \"currentLocation\"" |
| | 19 | | parsed | | entry | "857" | | detail | "ruler" | | explanation | "The text says Abaddon rules Irath, but the codex says Abaddon is the ruler of Irath." | | paragraph | 2 | | substring | "A volcanic wasteland of perpetual war. Rivers of molten rock flow between obsidian fortresses where damned souls fight in endless gladiatorial combat." |
| | 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 \"857\", expected \"855\"" |
| | 20 | | parsed | | entry | "858" | | detail | "cat" | | explanation | "The text says Eva's flat has a cat named Ptolemy, but the codex does not mention this." | | paragraph | 2 | | substring | "Eva's Flat — a cramped one-bedroom flat above a curry house on Brick Lane, East London. Every surface is covered with books, scrolls, and research notes." |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 2]" | | 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\"" |
| | 21 | | parsed | | entry | "859" | | detail | "ruler" | | explanation | "The text says Asmodeus rules Somnia, but the codex says Asmodeus is the ruler of Somnia." | | paragraph | 2 | | substring | "An endless twilight landscape of fog-shrouded meadows and crumbling mansions. Inhabitants gradually lose all motivation and ambition, sinking into eternal lethargy." |
| | 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\"" |
| | 22 | | parsed | | entry | "860" | | detail | "password" | | explanation | "The text says Yasmin's Apothecary has a password for the back room, but the codex does not mention this." | | paragraph | 2 | | substring | "A narrow shop on a side street in Brixton with a mundane front and a hidden supernatural back room." |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 2]" | | inBounds | true | | expectedText | "" | | locationAccurate | false |
|
| | 23 | | parsed | | entry | "862" | | detail | "ruler" | | explanation | "The text says Lilith rules Luxuria, but the codex says Lilith is the ruler of Luxuria." | | paragraph | 2 | | substring | "A hauntingly beautiful realm of moonlit gardens, mirrored halls, and enchanting music. Visitors become entranced by illusions of their deepest desires." |
| | 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\"" |
| | 24 | | parsed | | entry | "2001" | | detail | "gemstoneColor" | | explanation | "The text says the Heartstone Pendant's gemstone is deep crimson, but the codex says the Heartstone Pendant's gemstone is crimson." | | paragraph | 2 | | substring | "The Fae-Forged Blade was warm at her hip. She'd strapped it there that morning, its familiar warmth a comfort against the chill." |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 2]" | | 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\"" |
| | 25 | | parsed | | entry | "2002" | | detail | "inkColor" | | explanation | "The text says the Ledger of Debts has dark red ink, but the codex says the Ledger of Debts has dark red ink that appears on its own." | | paragraph | 2 | | substring | "The Ledger of Debts — a thick ledger that records every supernatural debt owed." |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 2]" | | inBounds | true | | expectedText | "" | | locationAccurate | false |
|
| | 26 | | parsed | | entry | "2003" | | detail | "creator" | | explanation | "The text says the Irathi War Gauntlet was forged by Gorath, but the codex does not mention this." | | paragraph | 2 | | substring | "A fearsome gauntlet forged in the volcanic forges of Irath." |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 2]" | | inBounds | true | | expectedText | "" | | locationAccurate | false |
|
| | 27 | | parsed | | entry | "2004" | | detail | "containerColor" | | explanation | "The text says Somnian Dream Dust is stored in small cobalt-blue glass vials, but the codex says Somnian Dream Dust is stored in small cobalt-blue glass vials sealed with black wax." | | paragraph | 2 | | substring | "A narcotic powder harvested from the twilight meadows of Somnia." |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 2]" | | inBounds | true | | expectedText | "little red glass vials" | | locationAccurate | false |
| | closestExpected | | entry | "2005" | | detail | "containerColor" | | summary | "Dream Dust is stored in cobalt-blue vials per codex, but Isolde says red glass vials." |
| | reason | "entry mismatch: got \"2004\", expected \"2005\"" |
| | 28 | | parsed | | entry | "2005" | | detail | "givenTo" | | explanation | "The text says the Fae-Forged Blade was given to Aurora by Isolde, but the codex does not mention this." | | paragraph | 2 | | substring | "A weapon of the Fae Courts, rare and highly coveted." |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 2]" | | inBounds | true | | expectedText | "little red glass vials" | | locationAccurate | false |
| | closestExpected | | entry | "2005" | | detail | "containerColor" | | summary | "Dream Dust is stored in cobalt-blue vials per codex, but Isolde says red glass vials." |
| | reason | "detail mismatch: got \"givenTo\", expected \"containerColor\"" |
| | 29 | | parsed | | entry | "2006" | | detail | "power" | | explanation | "The text says the Fae-Forged Blade can cut through magical wards, but the codex says the Fae-Forged Blade can cut through magical wards; particularly effective against demons." | | paragraph | 2 | | substring | "A weapon of the Fae Courts, rare and highly covoted." |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 2]" | | 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 \"power\", expected \"temperature\"" |
|
| |
| 9.0909% | Precision | True positives: 3/33 | | totalReported | 33 | | truePositives | 3 | | reportedDetails | | 0 | | parsed | | entry | "4414" | | detail | "eyeColor" | | explanation | "The text says green eyes, but the codex says Eva has green eyes." | | paragraph | 2 | | substring | "her curly red hair escaping from under a wool hat. Her square glasses kept fogging in the grove's strange microclimate." |
| | status | "false_positive" | | location | | extractedText | "her curly red hair escaping from under a wool hat. Her square glasses kept fogging in the grove's strange microclimate." | | inBounds | true | | expectedText | "Her square glasses kept fogging" | | locationAccurate | true |
| | closestExpected | | entry | "4414" | | detail | "glasses" | | summary | "Eva wears round glasses per codex, but the passage says square glasses." |
| | reason | "detail mismatch: got \"eyeColor\", expected \"glasses\"" |
| | 1 | | parsed | | entry | "4414" | | detail | "age" | | explanation | "The text says Eva is 26, but the codex says Eva is 27." | | paragraph | 2 | | substring | "Eva was beside her, clutching her leather satchel with both hands, her curly red hair escaping from under a wool hat. Her square glasses kept fogging in the grove's strange microclimate." |
| | status | "false_positive" | | location | | extractedText | "Eva was beside her, clutching her leather satchel with both hands, her curly red hair escaping from under a wool hat. Her square glasses kept fogging in the grove's strange microclimate." | | inBounds | true | | expectedText | "Her square glasses kept fogging" | | locationAccurate | true |
| | closestExpected | | entry | "4414" | | detail | "glasses" | | summary | "Eva wears round glasses per codex, but the passage says square glasses." |
| | reason | "detail mismatch: got \"age\", expected \"glasses\"" |
| | 2 | | parsed | | entry | "4415" | | detail | "age" | | explanation | "The text says Lucien is 30, but the codex says Lucien is 32." | | paragraph | 2 | | substring | "Lucien, who had been standing silently at the edge of the grove, spoke at last. His amber eyes were grave." |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 2]" | | 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\"" |
| | 3 | | parsed | | entry | "4418" | | detail | "age" | | explanation | "The text says Isolde is 300, but the codex says Isolde is 300 years old." | | paragraph | 2 | | substring | "Isolde, her waist-length silver hair stirring in a breeze that didn't exist outside the boundary." |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 2]" | | 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\"" |
| | 4 | | parsed | | entry | "4419" | | detail | "age" | | explanation | "The text says Maggie is 70, but the codex says Maggie is 72." | | paragraph | 2 | | substring | "Maggie rapped her oak walking stick against a stone." |
| | 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 \"age\", expected \"walkingStick\"" |
| | 5 | | parsed | | entry | "4420" | | detail | "age" | | explanation | "The text says Kai is 21, but the codex says Kai is 22." | | paragraph | 2 | | substring | "Kai, who had been quietly checking medical supplies in his bag, looked up. His scarred right forearm brushed the zipper as he closed it." |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 2]" | | 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 \"age\", expected \"hair\"" |
| | 6 | | parsed | | entry | "4421" | | detail | "age" | | explanation | "The text says Yasmin is 32, but the codex says Yasmin is 34." | | paragraph | 2 | | substring | "Yasmin uncorked a small vial and sniffed its contents, her amber eyes narrowing." |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 2]" | | 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 \"age\", expected \"tattoo\"" |
| | 7 | | parsed | | entry | "4422" | | detail | "age" | | explanation | "The text says Father Cormac is 52, but the codex says Father Cormac is 55." | | paragraph | 2 | | substring | "Father Cormac crossed himself, his dark brown eyes troubled beneath his thinning ginger hair. He gripped his cedar rosary beads tightly." |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 2]" | | 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 \"age\", expected \"eyeColor\"" |
| | 8 | | parsed | | entry | "4423" | | detail | "age" | | explanation | "The text says Wei-Lin is 45, but the codex says Wei-Lin is 48." | | paragraph | 2 | | substring | "Wei-Lin, leaning against one of the standing stones with his arms folded, grunted in agreement. The edge of the dragon tattoo on his chest was visible above his collar." |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 2]" | | 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 \"age\", expected \"tattoo\"" |
| | 9 | | parsed | | entry | "4424" | | detail | "age" | | explanation | "The text says Nyx is 300, but the codex says Nyx is ageless." | | paragraph | 2 | | substring | "Nyx materialized from the shadow of a standing stone, their glowing blue eyes cutting through the twilight." |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 2]" | | 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 \"age\", expected \"eyeColor\"" |
| | 10 | | parsed | | entry | "6001" | | detail | "headquarters" | | explanation | "The text says the Wardens' headquarters is Westminster Abbey, but the codex says the Wardens' headquarters is the Westminster Catacombs." | | paragraph | 2 | | substring | "Father Cormac crossed himself, his dark brown eyes troubled beneath his thinning ginger hair. He gripped his cedar rosary beads tightly." |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 2]" | | 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\"" |
| | 11 | | parsed | | entry | "6005" | | detail | "role" | | explanation | "The text says Golden Empress Restaurant is a front for supernatural activities, but the codex says it's a neutral meeting ground." | | paragraph | 2 | | substring | "Golden Empress Restaurant — a Cantonese restaurant in Chinatown. Yu-Fei knows about the supernatural world but stays strictly neutral." |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 2]" | | inBounds | true | | expectedText | "" | | locationAccurate | false |
|
| | 12 | | parsed | | entry | "6006" | | detail | "alignment" | | explanation | "The text says Blackthorn Security is Lawful Neutral, but the codex says it's Lawful Evil." | | paragraph | 2 | | substring | "Blackthorn Security — a private security company that is secretly a front for Warden hardliners who believe the current order is too lenient." |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 2]" | | 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 | "detail mismatch: got \"alignment\", expected \"logo\"" |
| | 13 | | parsed | | entry | "7001" | | detail | "appearance" | | explanation | "The text says the Veil shimmers, but the codex says the Veil is invisible to normal humans." | | paragraph | 2 | | substring | "The Veil shimmered — faint shimmering distortion visible only to those with supernatural sight." |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 2]" | | inBounds | true | | expectedText | "" | | locationAccurate | false |
|
| | 14 | | parsed | | entry | "7002" | | detail | "signedYear" | | explanation | "The text says the Covenant of Separation was signed in 1066, but the codex says it was signed in 1215." | | paragraph | 2 | | substring | "The Covenant of Separation — the old treaty from 1066 — forbids this kind of direct interference." |
| | 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 2]" | | inBounds | true | | expectedText | "the old treaty from 1066" | | locationAccurate | false |
|
| | 15 | | parsed | | entry | "7003" | | detail | "formation" | | explanation | "The text says rifts tend to form near underground water sources, but the codex says rifts tend to form near underground water sources and ley lines." | | paragraph | 2 | | substring | "They tend to form near underground water sources." |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 2]" | | inBounds | true | | expectedText | "" | | locationAccurate | false |
|
| | 16 | | parsed | | entry | "7004" | | detail | "sealingMethod" | | explanation | "The text says Helbound souls are sealed by blood, but the codex says Helbound souls are sealed by blood and recorded in that Prince's domain." | | paragraph | 2 | | substring | "They are sealed by blood and recorded in that Prince's domain." |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 2]" | | inBounds | true | | expectedText | "" | | locationAccurate | false |
|
| | 17 | | parsed | | entry | "7005" | | detail | "reversibility" | | explanation | "The text says the Shade transformation is reversible, but the codex says it's irreversible." | | paragraph | 2 | | substring | "The process by which a living being becomes a Shade." |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 2]" | | inBounds | true | | expectedText | "" | | locationAccurate | false |
|
| | 18 | | parsed | | entry | "854" | | detail | "secretRoom" | | explanation | "The text says The Raven's Nest has a secret room, but the codex does not mention this." | | paragraph | 2 | | substring | "The walls are covered with old maps and black-and-white photographs." |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 2]" | | inBounds | true | | expectedText | "" | | locationAccurate | false |
|
| | 19 | | parsed | | entry | "855" | | detail | "ruler" | | explanation | "The text says Prince Mammon rules Avaros, but the codex says Mammon is the ruler of Avaros." | | paragraph | 2 | | substring | "A landscape of towering vaults and endless treasure halls. The streets are paved with fool's gold and the air smells of copper. Mortals who enter often become obsessed with hoarding." |
| | 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 |
|
| | 20 | | parsed | | entry | "856" | | detail | "schedule" | | explanation | "The text says the Veil Market moves locations every full moon, but the codex says it moves locations every new moon." | | paragraph | 2 | | substring | "The market's moves locations every full moon." |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 2]" | | inBounds | true | | expectedText | "abandoned station under Shoreditch" | | locationAccurate | false |
| | closestExpected | | entry | "856" | | detail | "currentLocation" | | summary | "The Veil Market is under Camden per codex, but Wei-Lin says Shoreditch." |
| | reason | "detail mismatch: got \"schedule\", expected \"currentLocation\"" |
| | 21 | | parsed | | entry | "857" | | detail | "ruler" | | explanation | "The text says Abaddon rules Irath, but the codex says Abaddon is the ruler of Irath." | | paragraph | 2 | | substring | "A volcanic wasteland of perpetual war. Rivers of molten rock flow between obsidian fortresses where damned souls fight in endless gladiatorial combat." |
| | 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 \"857\", expected \"855\"" |
| | 22 | | parsed | | entry | "858" | | detail | "cat" | | explanation | "The text says Eva's flat has a cat named Ptolemy, but the codex does not mention this." | | paragraph | 2 | | substring | "Eva's Flat — a cramped one-bedroom flat above a curry house on Brick Lane, East London. Every surface is covered with books, scrolls, and research notes." |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 2]" | | 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\"" |
| | 23 | | parsed | | entry | "859" | | detail | "ruler" | | explanation | "The text says Asmodeus rules Somnia, but the codex says Asmodeus is the ruler of Somnia." | | paragraph | 2 | | substring | "An endless twilight landscape of fog-shrouded meadows and crumbling mansions. Inhabitants gradually lose all motivation and ambition, sinking into eternal lethargy." |
| | 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\"" |
| | 24 | | parsed | | entry | "860" | | detail | "password" | | explanation | "The text says Yasmin's Apothecary has a password for the back room, but the codex does not mention this." | | paragraph | 2 | | substring | "A narrow shop on a side street in Brixton with a mundane front and a hidden supernatural back room." |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 2]" | | inBounds | true | | expectedText | "" | | locationAccurate | false |
|
| | 25 | | parsed | | entry | "861" | | detail | "parkLocation" | | explanation | "The text says the Fae Grove is in Richmond Park, but the codex says the Fae Grove is in Richmond Park, London." | | paragraph | 2 | | substring | "A hidden clearing that exists in a pocket between Earth and the Fae realm." |
| | 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 | "[not found in paragraph 2]" | | inBounds | true | | expectedText | "The Fae Grove in Hyde Park" | | locationAccurate | false |
|
| | 26 | | parsed | | entry | "862" | | detail | "ruler" | | explanation | "The text says Lilith rules Luxuria, but the codex says Lilith is the ruler of Luxuria." | | paragraph | 2 | | substring | "A hauntingly beautiful realm of moonlit gardens, mirrored halls, and enchanting music. Visitors become entranced by illusions of their deepest desires." |
| | 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\"" |
| | 27 | | parsed | | entry | "2001" | | detail | "gemstoneColor" | | explanation | "The text says the Heartstone Pendant's gemstone is deep crimson, but the codex says the Heartstone Pendant's gemstone is crimson." | | paragraph | 2 | | substring | "The Fae-Forged Blade was warm at her hip. She'd strapped it there that morning, its familiar warmth a comfort against the chill." |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 2]" | | 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\"" |
| | 28 | | parsed | | entry | "2002" | | detail | "inkColor" | | explanation | "The text says the Ledger of Debts has dark red ink, but the codex says the Ledger of Debts has dark red ink that appears on its own." | | paragraph | 2 | | substring | "The Ledger of Debts — a thick ledger that records every supernatural debt owed." |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 2]" | | inBounds | true | | expectedText | "" | | locationAccurate | false |
|
| | 29 | | parsed | | entry | "2003" | | detail | "creator" | | explanation | "The text says the Irathi War Gauntlet was forged by Gorath, but the codex does not mention this." | | paragraph | 2 | | substring | "A fearsome gauntlet forged in the volcanic forges of Irath." |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 2]" | | inBounds | true | | expectedText | "" | | locationAccurate | false |
|
| | 30 | | parsed | | entry | "2004" | | detail | "containerColor" | | explanation | "The text says Somnian Dream Dust is stored in small cobalt-blue glass vials, but the codex says Somnian Dream Dust is stored in small cobalt-blue glass vials sealed with black wax." | | paragraph | 2 | | substring | "A narcotic powder harvested from the twilight meadows of Somnia." |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 2]" | | inBounds | true | | expectedText | "little red glass vials" | | locationAccurate | false |
| | closestExpected | | entry | "2005" | | detail | "containerColor" | | summary | "Dream Dust is stored in cobalt-blue vials per codex, but Isolde says red glass vials." |
| | reason | "entry mismatch: got \"2004\", expected \"2005\"" |
| | 31 | | parsed | | entry | "2005" | | detail | "givenTo" | | explanation | "The text says the Fae-Forged Blade was given to Aurora by Isolde, but the codex does not mention this." | | paragraph | 2 | | substring | "A weapon of the Fae Courts, rare and highly coveted." |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 2]" | | inBounds | true | | expectedText | "little red glass vials" | | locationAccurate | false |
| | closestExpected | | entry | "2005" | | detail | "containerColor" | | summary | "Dream Dust is stored in cobalt-blue vials per codex, but Isolde says red glass vials." |
| | reason | "detail mismatch: got \"givenTo\", expected \"containerColor\"" |
| | 32 | | parsed | | entry | "2006" | | detail | "power" | | explanation | "The text says the Fae-Forged Blade can cut through magical wards, but the codex says the Fae-Forged Blade can cut through magical wards; particularly effective against demons." | | paragraph | 2 | | substring | "A weapon of the Fae Courts, rare and highly covoted." |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 2]" | | 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 \"power\", expected \"temperature\"" |
|
| |