| 0.0000% | Accuracy (recall) | Matched: 2/30, FP: 39 | | parsedCount | 41 | | matched | 2 | | total | 30 | | falsePositives | 39 | | expectedDetails | | 0 | | expected | | entry | "861" | | detail | "parkLocation" | | summary | "The Fae Grove is in Richmond Park per codex, but the passage says Hyde Park." |
| | status | "missed" | | nearMiss | | parsed | | entry | "861" | | detail | "flora" | | explanation | "The text says wildflowers bloom year-round, but the codex says wildflowers bloom year-round." | | paragraph | 1 | | substring | "wildflowers bloom year-round" |
| | reason | "detail mismatch: got \"flora\", expected \"parkLocation\"" |
|
| | 1 | | expected | | entry | "861" | | detail | "standingStones" | | summary | "The grove has oak standing stones per codex, but the passage says elm." |
| | status | "missed" | | nearMiss | | parsed | | entry | "861" | | detail | "flora" | | explanation | "The text says wildflowers bloom year-round, but the codex says wildflowers bloom year-round." | | paragraph | 1 | | substring | "wildflowers bloom year-round" |
| | reason | "detail mismatch: got \"flora\", expected \"standingStones\"" |
|
| | 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 | "4424" | | detail | "age" | | explanation | "The text says Isolde Varga is 290 years old, but the codex says 300 years old." | | paragraph | 1 | | substring | "Isolde Varga's silver, reaching her waist" |
| | reason | "detail mismatch: got \"age\", expected \"eyeColor\"" |
|
| | 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 Isolde Varga is 290 years old, but the codex says 300 years old." | | paragraph | 1 | | substring | "Isolde Varga's silver, reaching her waist" |
| | 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 | "givenTo" | | explanation | "The text says the Fae-Forged Blade was given to Aurora by Isolde as a gift, but the codex says it was given to Aurora by an unknown benefactor." | | paragraph | 1 | | substring | "given to Aurora by Isolde as a gift" |
| | reason | "detail mismatch: got \"givenTo\", 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 | "age" | | explanation | "The text says Eva is 26 years old, but the codex says 24 years old." | | paragraph | 1 | | substring | "her curly red hair escaping" |
| | reason | "detail mismatch: got \"age\", 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 it is stored in small cobalt-blue glass vials." | | paragraph | 1 | | substring | "small cobalt-blue glass vials" |
| | 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 | "matched" | | matchedBy | | entry | "2005" | | detail | "sealMaterial" | | explanation | "The text says Somnian Dream Dust is sealed with black wax, but the codex says it is sealed with black wax." | | paragraph | 1 | | substring | "sealed with black wax" |
| | location | | extractedText | "[not found in paragraph 1]" | | inBounds | true | | expectedText | "sealed with white wax" | | locationAccurate | false |
|
| | 8 | | expected | | entry | "6003" | | detail | "master" | | summary | "The Somnian Cult serves Prince Asmodeus per codex, but Isolde says Prince Lilith." |
| | status | "missed" | | nearMiss | | parsed | | entry | "6003" | | detail | "alignment" | | explanation | "The text says the Somnian Cult's alignment is Neutral Evil, but the codex says their alignment is Lawful Neutral." | | paragraph | 1 | | substring | "Neutral Evil" |
| | reason | "detail mismatch: got \"alignment\", expected \"master\"" |
|
| | 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 | "4422" | | detail | "age" | | explanation | "The text says Father Cormac is 52 years old, but the codex says 55 years old." | | paragraph | 1 | | substring | "Father Cormac's thinning ginger hair" |
| | reason | "detail mismatch: got \"age\", expected \"eyeColor\"" |
|
| | 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 years old, but the codex says 55 years old." | | paragraph | 1 | | substring | "Father Cormac's thinning ginger hair" |
| | 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 | "missed" | | nearMiss | | parsed | | entry | "7002" | | detail | "enforcement" | | explanation | "The text says the Covenant of Separation's enforcement is that violations allow the Wardens to use lethal force, but the codex says the enforcement is that violations allow the Wardens to use lethal force." | | paragraph | 1 | | substring | "violations allow the Wardens to use lethal force" |
| | reason | "detail mismatch: got \"enforcement\", expected \"signedYear\"" |
|
| | 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 in Westminster Catacombs, London, but the codex says the headquarters is in the Westminster Catacombs, London." | | paragraph | 1 | | substring | "Westminster Catacombs, London" |
| | 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 years old, but the codex says 32 years old." | | paragraph | 1 | | substring | "Lucien's slicked-back platinum blond hair" |
| | 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 | "4415" | | detail | "age" | | explanation | "The text says Lucien is 30 years old, but the codex says 32 years old." | | paragraph | 1 | | substring | "Lucien's slicked-back platinum blond hair" |
| | reason | "detail mismatch: got \"age\", expected \"eyeColor\"" |
|
| | 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 years old, but the codex says 34 years old." | | paragraph | 1 | | substring | "Yasmin's long wavy dark hair" |
| | 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 years old, but the codex says 48 years old." | | paragraph | 1 | | substring | "Zhou Wei-Lin's shaved head" |
| | 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 | "givenTo" | | explanation | "The text says the Fae-Forged Blade was given to Aurora by Isolde as a gift, but the codex says it was given to Aurora by an unknown benefactor." | | paragraph | 1 | | substring | "given to Aurora by Isolde as a gift" |
| | reason | "detail mismatch: got \"givenTo\", expected \"material\"" |
|
| | 18 | | expected | | entry | "856" | | detail | "currentLocation" | | summary | "The Veil Market is under Camden per codex, but Wei-Lin says Shoreditch." |
| | status | "missed" |
| | 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 | "4412" | | detail | "hair" | | explanation | "The text says waist-length silver hair, but the codex says straight shoulder-length black hair." | | paragraph | 1 | | substring | "her waist-length silver hair stirring" |
| | reason | "entry mismatch: got \"4412\", expected \"4420\"" |
|
| | 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's alignment is Lawful Evil, but the codex says their alignment is Lawful Neutral." | | paragraph | 1 | | substring | "Lawful Evil" |
| | 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 years old, but the codex says 72 years old." | | paragraph | 1 | | substring | "Maggie's silver-white, worn in a neat bun" |
| | 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 | "4419" | | detail | "age" | | explanation | "The text says Maggie is 70 years old, but the codex says 72 years old." | | paragraph | 1 | | substring | "Maggie's silver-white, worn in a neat bun" |
| | reason | "detail mismatch: got \"age\", expected \"eyeColor\"" |
|
| | 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 in Westminster Catacombs, London, but the codex says the headquarters is in the Westminster Catacombs, London." | | paragraph | 1 | | substring | "Westminster Catacombs, London" |
| | 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" | | nearMiss | | parsed | | entry | "4417" | | detail | "age" | | explanation | "The text says Tomás is 28 years old, but the codex says 29 years old." | | paragraph | 1 | | substring | "Tomás' short curly dark brown hair" |
| | reason | "detail mismatch: got \"age\", expected \"scar\"" |
|
| | 25 | | expected | | entry | "4417" | | detail | "birthplace" | | summary | "Tomás was born in Seville per codex, but the passage implies Madrid accent." |
| | status | "missed" | | nearMiss | | parsed | | entry | "4417" | | detail | "age" | | explanation | "The text says Tomás is 28 years old, but the codex says 29 years old." | | paragraph | 1 | | substring | "Tomás' short curly dark brown hair" |
| | reason | "detail mismatch: got \"age\", expected \"birthplace\"" |
|
| | 26 | | expected | | entry | "4418" | | detail | "eyeColor" | | summary | "Nyx has violet eyes per codex, but the passage says blue." |
| | status | "missed" | | nearMiss | | parsed | | entry | "4418" | | detail | "age" | | explanation | "The text says Isolde is 300 years old, but the codex says 300 years old." | | paragraph | 1 | | substring | "Isolde's waist-length silver hair stirring" |
| | reason | "detail mismatch: got \"age\", expected \"eyeColor\"" |
|
| | 27 | | expected | | entry | "2001" | | detail | "chainMaterial" | | summary | "The Heartstone Pendant has a silver chain per codex, but the passage says golden chain." |
| | status | "matched" | | matchedBy | | entry | "2001" | | detail | "chainMaterial" | | explanation | "The text says the Heartstone Pendant's chain is golden, but the codex says the chain is silver." | | paragraph | 1 | | substring | "golden chain" |
| | location | | extractedText | "[not found in paragraph 1]" | | inBounds | true | | expectedText | "the golden chain tangled in her fingers" | | locationAccurate | false |
|
| | 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" |
| | 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 | "missed" | | nearMiss | | parsed | | entry | "862" | | detail | "ruler" | | explanation | "The text says Prince Lilith rules Luxuria, but the codex says Prince Asmodeus rules Luxuria." | | paragraph | 1 | | substring | "Prince Lilith" |
| | reason | "entry mismatch: got \"862\", expected \"855\"" |
|
|
| | falsePositiveDetails | | 0 | | parsed | | entry | "4412" | | detail | "hair" | | explanation | "The text says waist-length silver hair, but the codex says straight shoulder-length black hair." | | paragraph | 1 | | substring | "her waist-length silver hair stirring" |
| | status | "false_positive" | | location | | extractedText | "her waist-length silver hair stirring" | | 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\"" |
| | 1 | | parsed | | entry | "4413" | | detail | "age" | | explanation | "The text says thinning ginger hair, but the codex says 58 years old." | | paragraph | 1 | | substring | "his thinning ginger hair" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 1]" | | inBounds | true | | expectedText | "" | | locationAccurate | false |
|
| | 2 | | parsed | | entry | "4414" | | detail | "age" | | explanation | "The text says Eva is 26 years old, but the codex says 24 years old." | | paragraph | 1 | | substring | "her curly red hair escaping" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 1]" | | 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 \"age\", expected \"glasses\"" |
| | 3 | | parsed | | entry | "4415" | | detail | "age" | | explanation | "The text says Lucien is 30 years old, but the codex says 32 years old." | | paragraph | 1 | | substring | "Lucien's slicked-back platinum blond hair" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 1]" | | 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\"" |
| | 4 | | parsed | | entry | "4416" | | detail | "age" | | explanation | "The text says Detective Quinn is 39 years old, but the codex says 41 years old." | | paragraph | 1 | | substring | "Detective Harlow Quinn's closely cropped salt-and-pepper hair" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 1]" | | inBounds | true | | expectedText | "" | | locationAccurate | false |
|
| | 5 | | parsed | | entry | "4417" | | detail | "age" | | explanation | "The text says Tomás is 28 years old, but the codex says 29 years old." | | paragraph | 1 | | substring | "Tomás' short curly dark brown hair" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 1]" | | 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\"" |
| | 6 | | parsed | | entry | "4418" | | detail | "age" | | explanation | "The text says Isolde is 300 years old, but the codex says 300 years old." | | paragraph | 1 | | substring | "Isolde's waist-length silver hair stirring" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 1]" | | 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\"" |
| | 7 | | parsed | | entry | "4419" | | detail | "age" | | explanation | "The text says Maggie is 70 years old, but the codex says 72 years old." | | paragraph | 1 | | substring | "Maggie's silver-white, worn in a neat bun" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 1]" | | 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\"" |
| | 8 | | parsed | | entry | "4420" | | detail | "age" | | explanation | "The text says Kai is 21 years old, but the codex says 22 years old." | | paragraph | 1 | | substring | "Kai's dyed electric-blue in an undercut" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 1]" | | 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\"" |
| | 9 | | parsed | | entry | "4421" | | detail | "age" | | explanation | "The text says Yasmin is 32 years old, but the codex says 34 years old." | | paragraph | 1 | | substring | "Yasmin's long wavy dark hair" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 1]" | | 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\"" |
| | 10 | | parsed | | entry | "4422" | | detail | "age" | | explanation | "The text says Father Cormac is 52 years old, but the codex says 55 years old." | | paragraph | 1 | | substring | "Father Cormac's thinning ginger hair" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 1]" | | 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\"" |
| | 11 | | parsed | | entry | "4423" | | detail | "age" | | explanation | "The text says Wei-Lin is 45 years old, but the codex says 48 years old." | | paragraph | 1 | | substring | "Zhou Wei-Lin's shaved head" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 1]" | | 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\"" |
| | 12 | | parsed | | entry | "4424" | | detail | "age" | | explanation | "The text says Isolde Varga is 290 years old, but the codex says 300 years old." | | paragraph | 1 | | substring | "Isolde Varga's silver, reaching her waist" |
| | 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 \"age\", expected \"eyeColor\"" |
| | 13 | | parsed | | entry | "6001" | | detail | "headquarters" | | explanation | "The text says the Wardens' headquarters is in Westminster Catacombs, London, but the codex says the headquarters is in the Westminster Catacombs, London." | | paragraph | 1 | | substring | "Westminster Catacombs, London" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 1]" | | 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\"" |
| | 14 | | parsed | | entry | "6002" | | detail | "alignment" | | explanation | "The text says the Crimson Court's alignment is Chaotic Evil, but the codex says their alignment is Lawful Neutral." | | paragraph | 1 | | substring | "Chaotic Evil" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 1]" | | inBounds | true | | expectedText | "" | | locationAccurate | false |
|
| | 15 | | parsed | | entry | "6003" | | detail | "alignment" | | explanation | "The text says the Somnian Cult's alignment is Neutral Evil, but the codex says their alignment is Lawful Neutral." | | paragraph | 1 | | substring | "Neutral Evil" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 1]" | | inBounds | true | | expectedText | "Prince Lilith, demands more dreamers" | | locationAccurate | false |
| | closestExpected | | entry | "6003" | | detail | "master" | | summary | "The Somnian Cult serves Prince Asmodeus per codex, but Isolde says Prince Lilith." |
| | reason | "detail mismatch: got \"alignment\", expected \"master\"" |
| | 16 | | parsed | | entry | "6004" | | detail | "alignment" | | explanation | "The text says the Parish Guard's alignment is Lawful Good, but the codex says their alignment is Neutral." | | paragraph | 1 | | substring | "Lawful Good" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 1]" | | inBounds | true | | expectedText | "our cathedral in Southwark" | | locationAccurate | false |
| | closestExpected | | entry | "6004" | | detail | "headquarters" | | summary | "The Parish Guard HQ is St. Brigid's in Islington per codex, but Cormac says Southwark." |
| | reason | "detail mismatch: got \"alignment\", expected \"headquarters\"" |
| | 17 | | parsed | | entry | "6005" | | detail | "alignment" | | explanation | "The text says Golden Empress Restaurant's alignment is Neutral, but the codex says their alignment is Lawful Neutral." | | paragraph | 1 | | substring | "Neutral" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 1]" | | inBounds | true | | expectedText | "" | | locationAccurate | false |
|
| | 18 | | parsed | | entry | "6006" | | detail | "alignment" | | explanation | "The text says Blackthorn Security's alignment is Lawful Evil, but the codex says their alignment is Lawful Neutral." | | paragraph | 1 | | substring | "Lawful Evil" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 1]" | | 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\"" |
| | 19 | | parsed | | entry | "854" | | detail | "secretRoom" | | explanation | "The text says the secret room is accessible through a bookshelf, but the codex says it is accessible through a hidden door." | | paragraph | 1 | | substring | "hidden back room accessible through a bookshelf" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 1]" | | inBounds | true | | expectedText | "" | | locationAccurate | false |
|
| | 20 | | parsed | | entry | "860" | | detail | "password" | | explanation | "The text says the password for the back room is moonrise, but the codex says the password is moonrise." | | paragraph | 1 | | substring | "moonrise (required for back room access)" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 1]" | | inBounds | true | | expectedText | "" | | locationAccurate | false |
|
| | 21 | | parsed | | entry | "861" | | detail | "flora" | | explanation | "The text says wildflowers bloom year-round, but the codex says wildflowers bloom year-round." | | paragraph | 1 | | substring | "wildflowers bloom year-round" |
| | 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\"" |
| | 22 | | parsed | | entry | "862" | | detail | "ruler" | | explanation | "The text says Prince Lilith rules Luxuria, but the codex says Prince Asmodeus rules Luxuria." | | paragraph | 1 | | substring | "Prince Lilith" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 1]" | | 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\"" |
| | 23 | | parsed | | entry | "2002" | | detail | "inkColor" | | explanation | "The text says the Ledger of Debts' ink is dark red, but the codex says the ink is black." | | paragraph | 1 | | substring | "dark red ink that appears on its own" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 1]" | | inBounds | true | | expectedText | "" | | locationAccurate | false |
|
| | 24 | | parsed | | entry | "2003" | | detail | "power" | | explanation | "The text says the Irathi War Gauntlet's power is to grant superhuman strength and slowly corrupt the wearer's mind with rage, but the codex says it grants superhuman strength and slowly corrupts the wearer's mind with rage." | | paragraph | 1 | | substring | "grants superhuman strength but slowly corrupts the wearer's mind with rage" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 1]" | | inBounds | true | | expectedText | "" | | locationAccurate | false |
|
| | 25 | | parsed | | entry | "2004" | | detail | "containerColor" | | explanation | "The text says Somnian Dream Dust is stored in small cobalt-blue glass vials, but the codex says it is stored in small cobalt-blue glass vials." | | paragraph | 1 | | substring | "small cobalt-blue glass vials" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 1]" | | 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\"" |
| | 26 | | parsed | | entry | "2006" | | detail | "givenTo" | | explanation | "The text says the Fae-Forged Blade was given to Aurora by Isolde as a gift, but the codex says it was given to Aurora by an unknown benefactor." | | paragraph | 1 | | substring | "given to Aurora by Isolde as a gift" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 1]" | | 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\"" |
| | 27 | | parsed | | entry | "7001" | | detail | "appearance" | | explanation | "The text says the Veil appears as a faint shimmering distortion visible only to those with supernatural sight, but the codex says the Veil appears as a faint shimmering distortion visible only to those with supernatural sight." | | paragraph | 1 | | substring | "faint shimmering distortion visible only to those with supernatural sight" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 1]" | | inBounds | true | | expectedText | "" | | locationAccurate | false |
|
| | 28 | | parsed | | entry | "7002" | | detail | "enforcement" | | explanation | "The text says the Covenant of Separation's enforcement is that violations allow the Wardens to use lethal force, but the codex says the enforcement is that violations allow the Wardens to use lethal force." | | paragraph | 1 | | substring | "violations allow the Wardens to use lethal force" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 1]" | | inBounds | true | | expectedText | "the old treaty from 1066" | | locationAccurate | false |
| | closestExpected | | entry | "7002" | | detail | "signedYear" | | summary | "The Covenant of Separation was signed in 1215 per codex, but Cormac says 1066." |
| | reason | "detail mismatch: got \"enforcement\", expected \"signedYear\"" |
| | 29 | | parsed | | entry | "7003" | | detail | "formation" | | explanation | "The text says rift points tend to form near underground water sources, but the codex says rift points tend to form near underground water sources." | | paragraph | 1 | | substring | "tend to form near underground water sources" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 1]" | | inBounds | true | | expectedText | "" | | locationAccurate | false |
|
| | 30 | | parsed | | entry | "7004" | | detail | "sealingMethod" | | explanation | "The text says Helbound Souls are sealed by blood and recorded in that Prince's domain, but the codex says Helbound Souls are sealed by blood and recorded in that Prince's domain." | | paragraph | 1 | | substring | "sealed by blood and recorded in that Prince's domain" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 1]" | | inBounds | true | | expectedText | "" | | locationAccurate | false |
|
| | 31 | | parsed | | entry | "7005" | | detail | "physicalLoss" | | explanation | "The text says Shade Transformation strips the subject of their physical body permanently, but the codex says Shade Transformation strips the subject of their physical body permanently." | | paragraph | 1 | | substring | "strips the subject of their physical body permanently" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 1]" | | inBounds | true | | expectedText | "" | | locationAccurate | false |
|
| | 32 | | parsed | | entry | "7005" | | detail | "lostSenses" | | explanation | "The text says Shade Transformation causes the subject to lose ability to taste, smell, or feel physical sensations, but the codex says Shade Transformation causes the subject to lose ability to taste, smell, or feel physical sensations." | | paragraph | 1 | | substring | "lose ability to taste, smell, or feel physical sensations" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 1]" | | inBounds | true | | expectedText | "" | | locationAccurate | false |
|
| | 33 | | parsed | | entry | "6001" | | detail | "identificationMark" | | explanation | "The text says the Wardens' identification mark is a small iron pin in the shape of a closed eye, but the codex says the Wardens' identification mark is a small iron pin in the shape of a closed eye." | | paragraph | 1 | | substring | "small iron pin in the shape of a closed eye" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 1]" | | 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 \"identificationMark\", expected \"foundingYear\"" |
| | 34 | | parsed | | entry | "6002" | | detail | "operations" | | explanation | "The text says the Crimson Court's operations are human proxies, corrupted artifacts, and Helbound agents, but the codex says the Crimson Court's operations are human proxies, corrupted artifacts, and Helbound agents." | | paragraph | 1 | | substring | "human proxies, corrupted artifacts, and Helbound agents" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 1]" | | inBounds | true | | expectedText | "" | | locationAccurate | false |
|
| | 35 | | parsed | | entry | "6003" | | detail | "recruitmentMethod" | | explanation | "The text says the Somnian Cult's recruitment method is promising peace and freedom from suffering, but the codex says the Somnian Cult's recruitment method is promising peace and freedom from suffering." | | paragraph | 1 | | substring | "promises of peace and freedom from suffering" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 1]" | | inBounds | true | | expectedText | "Prince Lilith, demands more dreamers" | | locationAccurate | false |
| | closestExpected | | entry | "6003" | | detail | "master" | | summary | "The Somnian Cult serves Prince Asmodeus per codex, but Isolde says Prince Lilith." |
| | reason | "detail mismatch: got \"recruitmentMethod\", expected \"master\"" |
| | 36 | | parsed | | entry | "6004" | | detail | "independence" | | explanation | "The text says the Parish Guard operates independently from the Wardens, but the codex says the Parish Guard operates independently from the Wardens." | | paragraph | 1 | | substring | "operate independently from the Wardens" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 1]" | | inBounds | true | | expectedText | "our cathedral in Southwark" | | locationAccurate | false |
| | closestExpected | | entry | "6004" | | detail | "headquarters" | | summary | "The Parish Guard HQ is St. Brigid's in Islington per codex, but Cormac says Southwark." |
| | reason | "detail mismatch: got \"independence\", expected \"headquarters\"" |
| | 37 | | parsed | | entry | "6005" | | detail | "role" | | explanation | "The text says Golden Empress Restaurant's role is a neutral meeting ground for supernatural factions, but the codex says Golden Empress Restaurant's role is a neutral meeting ground for supernatural factions." | | paragraph | 1 | | substring | "neutral meeting ground for supernatural factions" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 1]" | | inBounds | true | | expectedText | "" | | locationAccurate | false |
|
| | 38 | | parsed | | entry | "6006" | | detail | "employees" | | explanation | "The text says Blackthorn Security's employees are human operatives and bound supernatural entities, but the codex says Blackthorn Security's employees are human operatives and bound supernatural entities." | | paragraph | 1 | | substring | "human operatives and bound supernatural entities" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 1]" | | 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 \"employees\", expected \"logo\"" |
|
| |
| 4.8780% | Precision | True positives: 2/41 | | totalReported | 41 | | truePositives | 2 | | reportedDetails | | 0 | | parsed | | entry | "4412" | | detail | "hair" | | explanation | "The text says waist-length silver hair, but the codex says straight shoulder-length black hair." | | paragraph | 1 | | substring | "her waist-length silver hair stirring" |
| | status | "false_positive" | | location | | extractedText | "her waist-length silver hair stirring" | | 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\"" |
| | 1 | | parsed | | entry | "4413" | | detail | "age" | | explanation | "The text says thinning ginger hair, but the codex says 58 years old." | | paragraph | 1 | | substring | "his thinning ginger hair" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 1]" | | inBounds | true | | expectedText | "" | | locationAccurate | false |
|
| | 2 | | parsed | | entry | "4414" | | detail | "age" | | explanation | "The text says Eva is 26 years old, but the codex says 24 years old." | | paragraph | 1 | | substring | "her curly red hair escaping" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 1]" | | 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 \"age\", expected \"glasses\"" |
| | 3 | | parsed | | entry | "4415" | | detail | "age" | | explanation | "The text says Lucien is 30 years old, but the codex says 32 years old." | | paragraph | 1 | | substring | "Lucien's slicked-back platinum blond hair" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 1]" | | 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\"" |
| | 4 | | parsed | | entry | "4416" | | detail | "age" | | explanation | "The text says Detective Quinn is 39 years old, but the codex says 41 years old." | | paragraph | 1 | | substring | "Detective Harlow Quinn's closely cropped salt-and-pepper hair" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 1]" | | inBounds | true | | expectedText | "" | | locationAccurate | false |
|
| | 5 | | parsed | | entry | "4417" | | detail | "age" | | explanation | "The text says Tomás is 28 years old, but the codex says 29 years old." | | paragraph | 1 | | substring | "Tomás' short curly dark brown hair" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 1]" | | 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\"" |
| | 6 | | parsed | | entry | "4418" | | detail | "age" | | explanation | "The text says Isolde is 300 years old, but the codex says 300 years old." | | paragraph | 1 | | substring | "Isolde's waist-length silver hair stirring" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 1]" | | 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\"" |
| | 7 | | parsed | | entry | "4419" | | detail | "age" | | explanation | "The text says Maggie is 70 years old, but the codex says 72 years old." | | paragraph | 1 | | substring | "Maggie's silver-white, worn in a neat bun" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 1]" | | 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\"" |
| | 8 | | parsed | | entry | "4420" | | detail | "age" | | explanation | "The text says Kai is 21 years old, but the codex says 22 years old." | | paragraph | 1 | | substring | "Kai's dyed electric-blue in an undercut" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 1]" | | 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\"" |
| | 9 | | parsed | | entry | "4421" | | detail | "age" | | explanation | "The text says Yasmin is 32 years old, but the codex says 34 years old." | | paragraph | 1 | | substring | "Yasmin's long wavy dark hair" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 1]" | | 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\"" |
| | 10 | | parsed | | entry | "4422" | | detail | "age" | | explanation | "The text says Father Cormac is 52 years old, but the codex says 55 years old." | | paragraph | 1 | | substring | "Father Cormac's thinning ginger hair" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 1]" | | 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\"" |
| | 11 | | parsed | | entry | "4423" | | detail | "age" | | explanation | "The text says Wei-Lin is 45 years old, but the codex says 48 years old." | | paragraph | 1 | | substring | "Zhou Wei-Lin's shaved head" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 1]" | | 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\"" |
| | 12 | | parsed | | entry | "4424" | | detail | "age" | | explanation | "The text says Isolde Varga is 290 years old, but the codex says 300 years old." | | paragraph | 1 | | substring | "Isolde Varga's silver, reaching her waist" |
| | 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 \"age\", expected \"eyeColor\"" |
| | 13 | | parsed | | entry | "6001" | | detail | "headquarters" | | explanation | "The text says the Wardens' headquarters is in Westminster Catacombs, London, but the codex says the headquarters is in the Westminster Catacombs, London." | | paragraph | 1 | | substring | "Westminster Catacombs, London" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 1]" | | 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\"" |
| | 14 | | parsed | | entry | "6002" | | detail | "alignment" | | explanation | "The text says the Crimson Court's alignment is Chaotic Evil, but the codex says their alignment is Lawful Neutral." | | paragraph | 1 | | substring | "Chaotic Evil" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 1]" | | inBounds | true | | expectedText | "" | | locationAccurate | false |
|
| | 15 | | parsed | | entry | "6003" | | detail | "alignment" | | explanation | "The text says the Somnian Cult's alignment is Neutral Evil, but the codex says their alignment is Lawful Neutral." | | paragraph | 1 | | substring | "Neutral Evil" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 1]" | | inBounds | true | | expectedText | "Prince Lilith, demands more dreamers" | | locationAccurate | false |
| | closestExpected | | entry | "6003" | | detail | "master" | | summary | "The Somnian Cult serves Prince Asmodeus per codex, but Isolde says Prince Lilith." |
| | reason | "detail mismatch: got \"alignment\", expected \"master\"" |
| | 16 | | parsed | | entry | "6004" | | detail | "alignment" | | explanation | "The text says the Parish Guard's alignment is Lawful Good, but the codex says their alignment is Neutral." | | paragraph | 1 | | substring | "Lawful Good" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 1]" | | inBounds | true | | expectedText | "our cathedral in Southwark" | | locationAccurate | false |
| | closestExpected | | entry | "6004" | | detail | "headquarters" | | summary | "The Parish Guard HQ is St. Brigid's in Islington per codex, but Cormac says Southwark." |
| | reason | "detail mismatch: got \"alignment\", expected \"headquarters\"" |
| | 17 | | parsed | | entry | "6005" | | detail | "alignment" | | explanation | "The text says Golden Empress Restaurant's alignment is Neutral, but the codex says their alignment is Lawful Neutral." | | paragraph | 1 | | substring | "Neutral" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 1]" | | inBounds | true | | expectedText | "" | | locationAccurate | false |
|
| | 18 | | parsed | | entry | "6006" | | detail | "alignment" | | explanation | "The text says Blackthorn Security's alignment is Lawful Evil, but the codex says their alignment is Lawful Neutral." | | paragraph | 1 | | substring | "Lawful Evil" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 1]" | | 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\"" |
| | 19 | | parsed | | entry | "854" | | detail | "secretRoom" | | explanation | "The text says the secret room is accessible through a bookshelf, but the codex says it is accessible through a hidden door." | | paragraph | 1 | | substring | "hidden back room accessible through a bookshelf" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 1]" | | inBounds | true | | expectedText | "" | | locationAccurate | false |
|
| | 20 | | parsed | | entry | "860" | | detail | "password" | | explanation | "The text says the password for the back room is moonrise, but the codex says the password is moonrise." | | paragraph | 1 | | substring | "moonrise (required for back room access)" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 1]" | | inBounds | true | | expectedText | "" | | locationAccurate | false |
|
| | 21 | | parsed | | entry | "861" | | detail | "flora" | | explanation | "The text says wildflowers bloom year-round, but the codex says wildflowers bloom year-round." | | paragraph | 1 | | substring | "wildflowers bloom year-round" |
| | 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\"" |
| | 22 | | parsed | | entry | "862" | | detail | "ruler" | | explanation | "The text says Prince Lilith rules Luxuria, but the codex says Prince Asmodeus rules Luxuria." | | paragraph | 1 | | substring | "Prince Lilith" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 1]" | | 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\"" |
| | 23 | | parsed | | entry | "2001" | | detail | "chainMaterial" | | explanation | "The text says the Heartstone Pendant's chain is golden, but the codex says the chain is silver." | | paragraph | 1 | | 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 1]" | | inBounds | true | | expectedText | "the golden chain tangled in her fingers" | | locationAccurate | false |
|
| | 24 | | parsed | | entry | "2002" | | detail | "inkColor" | | explanation | "The text says the Ledger of Debts' ink is dark red, but the codex says the ink is black." | | paragraph | 1 | | substring | "dark red ink that appears on its own" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 1]" | | inBounds | true | | expectedText | "" | | locationAccurate | false |
|
| | 25 | | parsed | | entry | "2003" | | detail | "power" | | explanation | "The text says the Irathi War Gauntlet's power is to grant superhuman strength and slowly corrupt the wearer's mind with rage, but the codex says it grants superhuman strength and slowly corrupts the wearer's mind with rage." | | paragraph | 1 | | substring | "grants superhuman strength but slowly corrupts the wearer's mind with rage" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 1]" | | inBounds | true | | expectedText | "" | | locationAccurate | false |
|
| | 26 | | parsed | | entry | "2004" | | detail | "containerColor" | | explanation | "The text says Somnian Dream Dust is stored in small cobalt-blue glass vials, but the codex says it is stored in small cobalt-blue glass vials." | | paragraph | 1 | | substring | "small cobalt-blue glass vials" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 1]" | | 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\"" |
| | 27 | | parsed | | entry | "2005" | | detail | "sealMaterial" | | explanation | "The text says Somnian Dream Dust is sealed with black wax, but the codex says it is sealed with black wax." | | paragraph | 1 | | substring | "sealed with black 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 1]" | | inBounds | true | | expectedText | "sealed with white wax" | | locationAccurate | false |
|
| | 28 | | parsed | | entry | "2006" | | detail | "givenTo" | | explanation | "The text says the Fae-Forged Blade was given to Aurora by Isolde as a gift, but the codex says it was given to Aurora by an unknown benefactor." | | paragraph | 1 | | substring | "given to Aurora by Isolde as a gift" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 1]" | | 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\"" |
| | 29 | | parsed | | entry | "7001" | | detail | "appearance" | | explanation | "The text says the Veil appears as a faint shimmering distortion visible only to those with supernatural sight, but the codex says the Veil appears as a faint shimmering distortion visible only to those with supernatural sight." | | paragraph | 1 | | substring | "faint shimmering distortion visible only to those with supernatural sight" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 1]" | | inBounds | true | | expectedText | "" | | locationAccurate | false |
|
| | 30 | | parsed | | entry | "7002" | | detail | "enforcement" | | explanation | "The text says the Covenant of Separation's enforcement is that violations allow the Wardens to use lethal force, but the codex says the enforcement is that violations allow the Wardens to use lethal force." | | paragraph | 1 | | substring | "violations allow the Wardens to use lethal force" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 1]" | | inBounds | true | | expectedText | "the old treaty from 1066" | | locationAccurate | false |
| | closestExpected | | entry | "7002" | | detail | "signedYear" | | summary | "The Covenant of Separation was signed in 1215 per codex, but Cormac says 1066." |
| | reason | "detail mismatch: got \"enforcement\", expected \"signedYear\"" |
| | 31 | | parsed | | entry | "7003" | | detail | "formation" | | explanation | "The text says rift points tend to form near underground water sources, but the codex says rift points tend to form near underground water sources." | | paragraph | 1 | | substring | "tend to form near underground water sources" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 1]" | | inBounds | true | | expectedText | "" | | locationAccurate | false |
|
| | 32 | | parsed | | entry | "7004" | | detail | "sealingMethod" | | explanation | "The text says Helbound Souls are sealed by blood and recorded in that Prince's domain, but the codex says Helbound Souls are sealed by blood and recorded in that Prince's domain." | | paragraph | 1 | | substring | "sealed by blood and recorded in that Prince's domain" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 1]" | | inBounds | true | | expectedText | "" | | locationAccurate | false |
|
| | 33 | | parsed | | entry | "7005" | | detail | "physicalLoss" | | explanation | "The text says Shade Transformation strips the subject of their physical body permanently, but the codex says Shade Transformation strips the subject of their physical body permanently." | | paragraph | 1 | | substring | "strips the subject of their physical body permanently" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 1]" | | inBounds | true | | expectedText | "" | | locationAccurate | false |
|
| | 34 | | parsed | | entry | "7005" | | detail | "lostSenses" | | explanation | "The text says Shade Transformation causes the subject to lose ability to taste, smell, or feel physical sensations, but the codex says Shade Transformation causes the subject to lose ability to taste, smell, or feel physical sensations." | | paragraph | 1 | | substring | "lose ability to taste, smell, or feel physical sensations" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 1]" | | inBounds | true | | expectedText | "" | | locationAccurate | false |
|
| | 35 | | parsed | | entry | "6001" | | detail | "identificationMark" | | explanation | "The text says the Wardens' identification mark is a small iron pin in the shape of a closed eye, but the codex says the Wardens' identification mark is a small iron pin in the shape of a closed eye." | | paragraph | 1 | | substring | "small iron pin in the shape of a closed eye" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 1]" | | 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 \"identificationMark\", expected \"foundingYear\"" |
| | 36 | | parsed | | entry | "6002" | | detail | "operations" | | explanation | "The text says the Crimson Court's operations are human proxies, corrupted artifacts, and Helbound agents, but the codex says the Crimson Court's operations are human proxies, corrupted artifacts, and Helbound agents." | | paragraph | 1 | | substring | "human proxies, corrupted artifacts, and Helbound agents" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 1]" | | inBounds | true | | expectedText | "" | | locationAccurate | false |
|
| | 37 | | parsed | | entry | "6003" | | detail | "recruitmentMethod" | | explanation | "The text says the Somnian Cult's recruitment method is promising peace and freedom from suffering, but the codex says the Somnian Cult's recruitment method is promising peace and freedom from suffering." | | paragraph | 1 | | substring | "promises of peace and freedom from suffering" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 1]" | | inBounds | true | | expectedText | "Prince Lilith, demands more dreamers" | | locationAccurate | false |
| | closestExpected | | entry | "6003" | | detail | "master" | | summary | "The Somnian Cult serves Prince Asmodeus per codex, but Isolde says Prince Lilith." |
| | reason | "detail mismatch: got \"recruitmentMethod\", expected \"master\"" |
| | 38 | | parsed | | entry | "6004" | | detail | "independence" | | explanation | "The text says the Parish Guard operates independently from the Wardens, but the codex says the Parish Guard operates independently from the Wardens." | | paragraph | 1 | | substring | "operate independently from the Wardens" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 1]" | | inBounds | true | | expectedText | "our cathedral in Southwark" | | locationAccurate | false |
| | closestExpected | | entry | "6004" | | detail | "headquarters" | | summary | "The Parish Guard HQ is St. Brigid's in Islington per codex, but Cormac says Southwark." |
| | reason | "detail mismatch: got \"independence\", expected \"headquarters\"" |
| | 39 | | parsed | | entry | "6005" | | detail | "role" | | explanation | "The text says Golden Empress Restaurant's role is a neutral meeting ground for supernatural factions, but the codex says Golden Empress Restaurant's role is a neutral meeting ground for supernatural factions." | | paragraph | 1 | | substring | "neutral meeting ground for supernatural factions" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 1]" | | inBounds | true | | expectedText | "" | | locationAccurate | false |
|
| | 40 | | parsed | | entry | "6006" | | detail | "employees" | | explanation | "The text says Blackthorn Security's employees are human operatives and bound supernatural entities, but the codex says Blackthorn Security's employees are human operatives and bound supernatural entities." | | paragraph | 1 | | substring | "human operatives and bound supernatural entities" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 1]" | | 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 \"employees\", expected \"logo\"" |
|
| |