| 31.82% | Accuracy (recall) | Matched: 13/33, FP: 5 | | parsedCount | 18 | | matched | 13 | | total | 33 | | falsePositives | 5 | | 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 codex says the Fae Grove is in Richmond Park, not Hyde Park." | | paragraph | 1 | | substring | "The Fae Grove in Hyde Park" |
| | location | | extractedText | "The Fae Grove in Hyde Park" | | inBounds | true | | expectedText | "The Fae Grove in Hyde Park" | | locationAccurate | true |
|
| | 1 | | expected | | entry | "861" | | detail | "standingStones" | | summary | "The grove has oak standing stones per codex, but the passage says elm." |
| | status | "matched" | | matchedBy | | entry | "861" | | detail | "standingStones" | | explanation | "The codex says the standing stones are ancient oak, not elm." | | paragraph | 1 | | substring | "ancient elm standing stones" |
| | location | | extractedText | "ancient elm standing stones" | | inBounds | true | | expectedText | "The ancient elm standing stones" | | locationAccurate | true |
|
| | 2 | | expected | | entry | "4424" | | detail | "eyeColor" | | summary | "Isolde has pale lavender eyes per codex, but the passage says pale blue eyes." |
| | status | "matched" | | matchedBy | | entry | "4424" | | detail | "eyeColor" | | explanation | "The codex says Isolde's eye color is pale lavender, not pale blue." | | paragraph | 1 | | substring | "pale blue eyes" |
| | location | | extractedText | "pale blue eyes" | | inBounds | true | | expectedText | "Her pale blue eyes, unblinking" | | locationAccurate | true |
|
| | 3 | | expected | | entry | "4424" | | detail | "eyeColor" | | summary | "Isolde has pale lavender eyes per codex, but the passage again says pale blue eyes in a later paragraph." |
| | status | "missed" | | nearMiss | | parsed | | entry | "381?" | | detail | "" | | explanation | "(No codex entry for \"Madrid accent\" — Tomás is from Seville, not Madrid. Though the character is from Seville, his accent could be Madrid-like? Not a clear contradiction — he's from Seville, so his accent is Andalusian, not Madrid. Stretch, but codex says birthplace Seville, so \"Madrid accent\" is a contradiction if it distinctly indicates Madrid." |
| | reason | "entry mismatch: got \"381?\", expected \"4424\"" |
|
| | 4 | | expected | | entry | "4424" | | detail | "footprints" | | summary | "Isolde leaves no footprints per codex, but the passage says she leaves clear prints." |
| | status | "matched" | | matchedBy | | entry | "4424" | | detail | "footprints" | | explanation | "The codex states Isolde leaves no footprints." | | paragraph | 3 | | substring | "her bare feet leaving clear prints" |
| | location | | extractedText | "her bare feet leaving clear prints" | | inBounds | true | | expectedText | "her bare feet leaving clear prints in the soft earth" | | locationAccurate | true |
|
| | 5 | | 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 | "381?" | | detail | "" | | explanation | "(No codex entry for \"Madrid accent\" — Tomás is from Seville, not Madrid. Though the character is from Seville, his accent could be Madrid-like? Not a clear contradiction — he's from Seville, so his accent is Andalusian, not Madrid. Stretch, but codex says birthplace Seville, so \"Madrid accent\" is a contradiction if it distinctly indicates Madrid." |
| | reason | "entry mismatch: got \"381?\", expected \"2006\"" |
|
| | 6 | | expected | | entry | "4414" | | detail | "glasses" | | summary | "Eva wears round glasses per codex, but the passage says square glasses." |
| | status | "matched" | | matchedBy | | entry | "4414" | | detail | "glasses" | | explanation | "The codex says Eva wears round glasses, not square." | | paragraph | 2 | | substring | "square glasses" |
| | location | | extractedText | "square glasses" | | inBounds | true | | expectedText | "Her square glasses kept fogging" | | locationAccurate | true |
|
| | 7 | | expected | | entry | "2005" | | detail | "containerColor" | | summary | "Dream Dust is stored in cobalt-blue vials per codex, but Isolde says red glass vials." |
| | status | "missed" | | nearMiss | | parsed | | entry | "381?" | | detail | "" | | explanation | "(No codex entry for \"Madrid accent\" — Tomás is from Seville, not Madrid. Though the character is from Seville, his accent could be Madrid-like? Not a clear contradiction — he's from Seville, so his accent is Andalusian, not Madrid. Stretch, but codex says birthplace Seville, so \"Madrid accent\" is a contradiction if it distinctly indicates Madrid." |
| | reason | "entry mismatch: got \"381?\", expected \"2005\"" |
|
| | 8 | | expected | | entry | "2005" | | detail | "sealMaterial" | | summary | "Dream Dust vials are sealed with black wax per codex, but Isolde says white wax." |
| | status | "missed" | | nearMiss | | parsed | | entry | "381?" | | detail | "" | | explanation | "(No codex entry for \"Madrid accent\" — Tomás is from Seville, not Madrid. Though the character is from Seville, his accent could be Madrid-like? Not a clear contradiction — he's from Seville, so his accent is Andalusian, not Madrid. Stretch, but codex says birthplace Seville, so \"Madrid accent\" is a contradiction if it distinctly indicates Madrid." |
| | reason | "entry mismatch: got \"381?\", expected \"2005\"" |
|
| | 9 | | expected | | entry | "6003" | | detail | "master" | | summary | "The Somnian Cult serves Prince Asmodeus per codex, but Isolde says Prince Lilith." |
| | status | "missed" | | nearMiss | | parsed | | entry | "381?" | | detail | "" | | explanation | "(No codex entry for \"Madrid accent\" — Tomás is from Seville, not Madrid. Though the character is from Seville, his accent could be Madrid-like? Not a clear contradiction — he's from Seville, so his accent is Andalusian, not Madrid. Stretch, but codex says birthplace Seville, so \"Madrid accent\" is a contradiction if it distinctly indicates Madrid." |
| | reason | "entry mismatch: got \"381?\", expected \"6003\"" |
|
| | 10 | | expected | | entry | "4422" | | detail | "eyeColor" | | summary | "Father Cormac has pale blue eyes per codex, but the passage says dark brown eyes." |
| | status | "matched" | | matchedBy | | entry | "4422" | | detail | "eyeColor" | | explanation | "The codex says Father Cormac's eye color is pale blue, not dark brown." | | paragraph | 4 | | substring | "his dark brown eyes" |
| | location | | extractedText | "his dark brown eyes" | | inBounds | true | | expectedText | "his dark brown eyes troubled" | | locationAccurate | true |
|
| | 11 | | expected | | entry | "4422" | | detail | "rosary" | | summary | "Cormac carries a rowan wood rosary per codex, but the passage says cedar." |
| | status | "missed" | | nearMiss | | parsed | | entry | "381?" | | detail | "" | | explanation | "(No codex entry for \"Madrid accent\" — Tomás is from Seville, not Madrid. Though the character is from Seville, his accent could be Madrid-like? Not a clear contradiction — he's from Seville, so his accent is Andalusian, not Madrid. Stretch, but codex says birthplace Seville, so \"Madrid accent\" is a contradiction if it distinctly indicates Madrid." |
| | reason | "entry mismatch: got \"381?\", expected \"4422\"" |
|
| | 12 | | expected | | entry | "7002" | | detail | "signedYear" | | summary | "The Covenant of Separation was signed in 1215 per codex, but Cormac says 1066." |
| | status | "matched" | | matchedBy | | entry | "7002" | | detail | "signedYear" | | explanation | "The codex says the Covenant of Separation was signed in 1215, not 1066." | | paragraph | 4 | | substring | "old treaty from 1066" |
| | location | | extractedText | "old treaty from 1066" | | inBounds | true | | expectedText | "the old treaty from 1066" | | locationAccurate | true |
|
| | 13 | | expected | | entry | "6004" | | detail | "headquarters" | | summary | "The Parish Guard HQ is St. Brigid's in Islington per codex, but Cormac says Southwark." |
| | status | "missed" | | nearMiss | | parsed | | entry | "6004" | | detail | "identification" | | explanation | "The codex says the Parish Guard uses rowan-wood rosaries, not cedar." | | paragraph | 4 | | substring | "cedar rosary beads" |
| | reason | "detail mismatch: got \"identification\", expected \"headquarters\"" |
|
| | 14 | | expected | | entry | "4415" | | detail | "cane" | | summary | "Lucien carries an ivory-handled cane per codex, but the passage says mahogany." |
| | status | "matched" | | matchedBy | | entry | "4415" | | detail | "cane" | | explanation | "The codex says Lucien's cane is ivory-handled, not mahogany." | | paragraph | 4 | | substring | "mahogany cane" |
| | location | | extractedText | "[not found in paragraph 4]" | | inBounds | true | | expectedText | "leaning on his mahogany cane" | | locationAccurate | false |
|
| | 15 | | expected | | entry | "4415" | | detail | "eyeColor" | | summary | "Lucien has heterochromatic eyes (one amber, one black), but the passage says both amber." |
| | status | "matched" | | matchedBy | | entry | "4415" | | detail | "eyeColor" | | explanation | "The codex says Lucien is heterochromatic — one amber, one black. Both amber is incorrect." | | paragraph | 4 | | substring | "Both his amber eyes" |
| | location | | extractedText | "[not found in paragraph 4]" | | inBounds | true | | expectedText | "Both his amber eyes were fixed" | | locationAccurate | false |
|
| | 16 | | expected | | entry | "4421" | | detail | "tattoo" | | summary | "Yasmin's flame serpent tattoo is on her left arm per codex, but the passage says right arm." |
| | status | "missed" | | nearMiss | | parsed | | entry | "381?" | | detail | "" | | explanation | "(No codex entry for \"Madrid accent\" — Tomás is from Seville, not Madrid. Though the character is from Seville, his accent could be Madrid-like? Not a clear contradiction — he's from Seville, so his accent is Andalusian, not Madrid. Stretch, but codex says birthplace Seville, so \"Madrid accent\" is a contradiction if it distinctly indicates Madrid." |
| | reason | "entry mismatch: got \"381?\", expected \"4421\"" |
|
| | 17 | | 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 | "381?" | | detail | "" | | explanation | "(No codex entry for \"Madrid accent\" — Tomás is from Seville, not Madrid. Though the character is from Seville, his accent could be Madrid-like? Not a clear contradiction — he's from Seville, so his accent is Andalusian, not Madrid. Stretch, but codex says birthplace Seville, so \"Madrid accent\" is a contradiction if it distinctly indicates Madrid." |
| | reason | "entry mismatch: got \"381?\", expected \"4423\"" |
|
| | 18 | | expected | | entry | "2006" | | detail | "material" | | summary | "Fae-Forged Blades are moonsilver per codex, but Wei-Lin says bronze." |
| | status | "missed" | | nearMiss | | parsed | | entry | "381?" | | detail | "" | | explanation | "(No codex entry for \"Madrid accent\" — Tomás is from Seville, not Madrid. Though the character is from Seville, his accent could be Madrid-like? Not a clear contradiction — he's from Seville, so his accent is Andalusian, not Madrid. Stretch, but codex says birthplace Seville, so \"Madrid accent\" is a contradiction if it distinctly indicates Madrid." |
| | reason | "entry mismatch: got \"381?\", expected \"2006\"" |
|
| | 19 | | expected | | entry | "856" | | detail | "currentLocation" | | summary | "The Veil Market is under Camden per codex, but Wei-Lin says Shoreditch." |
| | status | "matched" | | matchedBy | | entry | "856" | | detail | "currentLocation" | | explanation | "The codex says the Veil Market is under Camden, not Shoreditch." | | paragraph | 7 | | substring | "abandoned station under Shoreditch" |
| | location | | extractedText | "abandoned station under Shoreditch" | | inBounds | true | | expectedText | "abandoned station under Shoreditch" | | locationAccurate | true |
|
| | 20 | | 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 | "381?" | | detail | "" | | explanation | "(No codex entry for \"Madrid accent\" — Tomás is from Seville, not Madrid. Though the character is from Seville, his accent could be Madrid-like? Not a clear contradiction — he's from Seville, so his accent is Andalusian, not Madrid. Stretch, but codex says birthplace Seville, so \"Madrid accent\" is a contradiction if it distinctly indicates Madrid." |
| | reason | "entry mismatch: got \"381?\", expected \"4420\"" |
|
| | 21 | | expected | | entry | "6006" | | detail | "logo" | | summary | "Blackthorn Security's logo is a thorned branch inside a shield per codex, but Kai says a sword inside a circle." |
| | status | "matched" | | matchedBy | | entry | "6006" | | detail | "logo" | | explanation | "The codex says the Blackthorn Security logo is a thorned branch inside a shield, not a sword inside a circle." | | paragraph | 8 | | substring | "their logo — the sword inside a circle" |
| | location | | extractedText | "their logo — the sword inside a circle" | | inBounds | true | | expectedText | "the sword inside a circle" | | locationAccurate | true |
|
| | 22 | | expected | | entry | "4419" | | detail | "walkingStick" | | summary | "Maggie carries a blackthorn stick per codex, but the passage says oak." |
| | status | "missed" | | nearMiss | | parsed | | entry | "381?" | | detail | "" | | explanation | "(No codex entry for \"Madrid accent\" — Tomás is from Seville, not Madrid. Though the character is from Seville, his accent could be Madrid-like? Not a clear contradiction — he's from Seville, so his accent is Andalusian, not Madrid. Stretch, but codex says birthplace Seville, so \"Madrid accent\" is a contradiction if it distinctly indicates Madrid." |
| | reason | "entry mismatch: got \"381?\", expected \"4419\"" |
|
| | 23 | | expected | | entry | "4419" | | detail | "eyeColor" | | summary | "Maggie has grey eyes per codex, but the passage says green." |
| | status | "missed" | | nearMiss | | parsed | | entry | "381?" | | detail | "" | | explanation | "(No codex entry for \"Madrid accent\" — Tomás is from Seville, not Madrid. Though the character is from Seville, his accent could be Madrid-like? Not a clear contradiction — he's from Seville, so his accent is Andalusian, not Madrid. Stretch, but codex says birthplace Seville, so \"Madrid accent\" is a contradiction if it distinctly indicates Madrid." |
| | reason | "entry mismatch: got \"381?\", expected \"4419\"" |
|
| | 24 | | expected | | entry | "6001" | | detail | "foundingYear" | | summary | "The Wardens were founded in 1215 per codex, but Maggie says 1066." |
| | status | "matched" | | matchedBy | | entry | "6001" | | detail | "foundingYear" | | explanation | "Codex says founded in 1215." | | paragraph | 10 | | substring | "Wardens were founded in 1066" |
| | location | | extractedText | "[not found in paragraph 10]" | | inBounds | true | | expectedText | "The Wardens were founded in 1066" | | locationAccurate | false |
|
| | 25 | | expected | | entry | "4417" | | detail | "scar" | | summary | "Tomás has a scar on his left forearm per codex, but the passage says right forearm." |
| | status | "missed" | | nearMiss | | parsed | | entry | "381?" | | detail | "" | | explanation | "(No codex entry for \"Madrid accent\" — Tomás is from Seville, not Madrid. Though the character is from Seville, his accent could be Madrid-like? Not a clear contradiction — he's from Seville, so his accent is Andalusian, not Madrid. Stretch, but codex says birthplace Seville, so \"Madrid accent\" is a contradiction if it distinctly indicates Madrid." |
| | reason | "entry mismatch: got \"381?\", expected \"4417\"" |
|
| | 26 | | expected | | entry | "4417" | | detail | "birthplace" | | summary | "Tomás was born in Seville per codex, but the passage implies Madrid accent." |
| | status | "matched" | | matchedBy | | entry | "4417" | | detail | "birthplace" | | explanation | "Tomás is from Seville, Spain; Madrid accent is contradictory." | | paragraph | 11 | | substring | "His Madrid accent" |
| | location | | extractedText | "[not found in paragraph 11]" | | inBounds | true | | expectedText | "His Madrid accent" | | locationAccurate | false |
|
| | 27 | | expected | | entry | "4418" | | detail | "eyeColor" | | summary | "Nyx has violet eyes per codex, but the passage says blue." |
| | status | "missed" | | nearMiss | | parsed | | entry | "381?" | | detail | "" | | explanation | "(No codex entry for \"Madrid accent\" — Tomás is from Seville, not Madrid. Though the character is from Seville, his accent could be Madrid-like? Not a clear contradiction — he's from Seville, so his accent is Andalusian, not Madrid. Stretch, but codex says birthplace Seville, so \"Madrid accent\" is a contradiction if it distinctly indicates Madrid." |
| | reason | "entry mismatch: got \"381?\", expected \"4418\"" |
|
| | 28 | | 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 | "381?" | | detail | "" | | explanation | "(No codex entry for \"Madrid accent\" — Tomás is from Seville, not Madrid. Though the character is from Seville, his accent could be Madrid-like? Not a clear contradiction — he's from Seville, so his accent is Andalusian, not Madrid. Stretch, but codex says birthplace Seville, so \"Madrid accent\" is a contradiction if it distinctly indicates Madrid." |
| | reason | "entry mismatch: got \"381?\", expected \"2001\"" |
|
| | 29 | | expected | | entry | "2001" | | detail | "origin" | | summary | "The Heartstone Pendant was forged in Dymas per codex, but Isolde says it was forged in Avaros." |
| | status | "missed" | | nearMiss | | parsed | | entry | "381?" | | detail | "" | | explanation | "(No codex entry for \"Madrid accent\" — Tomás is from Seville, not Madrid. Though the character is from Seville, his accent could be Madrid-like? Not a clear contradiction — he's from Seville, so his accent is Andalusian, not Madrid. Stretch, but codex says birthplace Seville, so \"Madrid accent\" is a contradiction if it distinctly indicates Madrid." |
| | reason | "entry mismatch: got \"381?\", expected \"2001\"" |
|
| | 30 | | expected | | entry | "855" | | detail | "ruler" | | summary | "Avaros is Prince Mammon's realm per codex, but Tomás says Prince Belphegor's agents operate there." |
| | status | "missed" | | nearMiss | | parsed | | entry | "859" | | detail | "ruler" | | explanation | "The codex says Somnia is ruled by Prince Asmodeus, not Prince Lilith. Prince Lilith rules Luxuria." | | paragraph | 6 | | substring | "their master, Prince Lilith" |
| | reason | "entry mismatch: got \"859\", expected \"855\"" |
|
| | 31 | | expected | | entry | "2006" | | detail | "temperature" | | summary | "The Fae-Forged Blade is always cold per codex, but the passage again describes it as warm in a later paragraph." |
| | status | "missed" | | nearMiss | | parsed | | entry | "381?" | | detail | "" | | explanation | "(No codex entry for \"Madrid accent\" — Tomás is from Seville, not Madrid. Though the character is from Seville, his accent could be Madrid-like? Not a clear contradiction — he's from Seville, so his accent is Andalusian, not Madrid. Stretch, but codex says birthplace Seville, so \"Madrid accent\" is a contradiction if it distinctly indicates Madrid." |
| | reason | "entry mismatch: got \"381?\", expected \"2006\"" |
|
| | 32 | | expected | | entry | "6002" | | detail | "headquarters" | | summary | "The Crimson Court's headquarters is in Dymas per codex, but Lucien says their base has shifted to Irath." |
| | status | "missed" | | nearMiss | | parsed | | entry | "381?" | | detail | "" | | explanation | "(No codex entry for \"Madrid accent\" — Tomás is from Seville, not Madrid. Though the character is from Seville, his accent could be Madrid-like? Not a clear contradiction — he's from Seville, so his accent is Andalusian, not Madrid. Stretch, but codex says birthplace Seville, so \"Madrid accent\" is a contradiction if it distinctly indicates Madrid." |
| | reason | "entry mismatch: got \"381?\", expected \"6002\"" |
|
|
| | falsePositiveDetails | | 0 | | parsed | | entry | "859" | | detail | "ruler" | | explanation | "The codex says Somnia is ruled by Prince Asmodeus, not Prince Lilith. Prince Lilith rules Luxuria." | | paragraph | 6 | | substring | "their master, Prince Lilith" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 6]" | | inBounds | true | | expectedText | "Prince Belphegor's agents are kidnapping humans" | | locationAccurate | false |
| | closestExpected | | entry | "855" | | detail | "ruler" | | summary | "Avaros is Prince Mammon's realm per codex, but Tomás says Prince Belphegor's agents operate there." |
| | reason | "entry mismatch: got \"859\", expected \"855\"" |
| | 1 | | parsed | | entry | "6004" | | detail | "identification" | | explanation | "The codex says the Parish Guard uses rowan-wood rosaries, not cedar." | | paragraph | 4 | | substring | "cedar rosary beads" |
| | status | "false_positive" | | location | | extractedText | "cedar rosary beads" | | 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 \"identification\", expected \"headquarters\"" |
| | 2 | | parsed | | entry | "862" | | detail | "ruler" | | explanation | "Lilith is Prince of Luxuria, but the context (Somnian Cult) implies a misattribution. However, the codex entry for Somnia lists Prince Asmodeus; Lilith is not the Somnian ruler." | | paragraph | 6 | | substring | "Prince Lilith" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 6]" | | inBounds | true | | expectedText | "Prince Belphegor's agents are kidnapping humans" | | locationAccurate | false |
| | closestExpected | | entry | "855" | | detail | "ruler" | | summary | "Avaros is Prince Mammon's realm per codex, but Tomás says Prince Belphegor's agents operate there." |
| | reason | "entry mismatch: got \"862\", expected \"855\"" |
| | 3 | | parsed | | entry | "6001" | | detail | "identificationMark" | | explanation | "No direct conflict, but implied earlier in \"founded in 1066\" found in paragraph 10. The Wardens were founded in 1215 per codex." | | paragraph | 10 | | substring | "Wardens' official stance" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 10]" | | inBounds | true | | expectedText | "The Wardens were founded in 1066" | | locationAccurate | false |
| | closestExpected | | entry | "6001" | | detail | "foundingYear" | | summary | "The Wardens were founded in 1215 per codex, but Maggie says 1066." |
| | reason | "detail mismatch: got \"identificationMark\", expected \"foundingYear\"" |
| | 4 | | parsed | | entry | "381?" | | detail | "" | | explanation | "(No codex entry for \"Madrid accent\" — Tomás is from Seville, not Madrid. Though the character is from Seville, his accent could be Madrid-like? Not a clear contradiction — he's from Seville, so his accent is Andalusian, not Madrid. Stretch, but codex says birthplace Seville, so \"Madrid accent\" is a contradiction if it distinctly indicates Madrid." |
| | status | "false_positive" | | location | | extractedText | (null) | | inBounds | false | | expectedText | "The Fae Grove in Hyde Park" | | locationAccurate | (null) |
| | 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 \"381?\", expected \"861\"" |
|
| |
| 72.22% | Precision | True positives: 13/18 | | totalReported | 18 | | truePositives | 13 | | reportedDetails | | 0 | | parsed | | entry | "861" | | detail | "parkLocation" | | explanation | "The codex says the Fae Grove is in Richmond Park, not Hyde Park." | | paragraph | 1 | | substring | "The Fae Grove in Hyde Park" |
| | status | "true_positive" | | matchedExpected | | entry | "861" | | detail | "parkLocation" | | summary | "The Fae Grove is in Richmond Park per codex, but the passage says Hyde Park." |
| | location | | extractedText | "The Fae Grove in Hyde Park" | | inBounds | true | | expectedText | "The Fae Grove in Hyde Park" | | locationAccurate | true |
|
| | 1 | | parsed | | entry | "861" | | detail | "standingStones" | | explanation | "The codex says the standing stones are ancient oak, not elm." | | paragraph | 1 | | substring | "ancient elm standing stones" |
| | status | "true_positive" | | matchedExpected | | entry | "861" | | detail | "standingStones" | | summary | "The grove has oak standing stones per codex, but the passage says elm." |
| | location | | extractedText | "ancient elm standing stones" | | inBounds | true | | expectedText | "The ancient elm standing stones" | | locationAccurate | true |
|
| | 2 | | parsed | | entry | "4424" | | detail | "eyeColor" | | explanation | "The codex says Isolde's eye color is pale lavender, not pale blue." | | paragraph | 1 | | substring | "pale blue eyes" |
| | status | "true_positive" | | matchedExpected | | entry | "4424" | | detail | "eyeColor" | | summary | "Isolde has pale lavender eyes per codex, but the passage says pale blue eyes." |
| | location | | extractedText | "pale blue eyes" | | inBounds | true | | expectedText | "Her pale blue eyes, unblinking" | | locationAccurate | true |
|
| | 3 | | parsed | | entry | "4414" | | detail | "glasses" | | explanation | "The codex says Eva wears round glasses, not square." | | paragraph | 2 | | substring | "square glasses" |
| | status | "true_positive" | | matchedExpected | | entry | "4414" | | detail | "glasses" | | summary | "Eva wears round glasses per codex, but the passage says square glasses." |
| | location | | extractedText | "square glasses" | | inBounds | true | | expectedText | "Her square glasses kept fogging" | | locationAccurate | true |
|
| | 4 | | parsed | | entry | "4424" | | detail | "footprints" | | explanation | "The codex states Isolde leaves no footprints." | | paragraph | 3 | | substring | "her bare feet leaving clear prints" |
| | status | "true_positive" | | matchedExpected | | entry | "4424" | | detail | "footprints" | | summary | "Isolde leaves no footprints per codex, but the passage says she leaves clear prints." |
| | location | | extractedText | "her bare feet leaving clear prints" | | inBounds | true | | expectedText | "her bare feet leaving clear prints in the soft earth" | | locationAccurate | true |
|
| | 5 | | parsed | | entry | "7002" | | detail | "signedYear" | | explanation | "The codex says the Covenant of Separation was signed in 1215, not 1066." | | paragraph | 4 | | substring | "old treaty from 1066" |
| | status | "true_positive" | | matchedExpected | | entry | "7002" | | detail | "signedYear" | | summary | "The Covenant of Separation was signed in 1215 per codex, but Cormac says 1066." |
| | location | | extractedText | "old treaty from 1066" | | inBounds | true | | expectedText | "the old treaty from 1066" | | locationAccurate | true |
|
| | 6 | | parsed | | entry | "4415" | | detail | "cane" | | explanation | "The codex says Lucien's cane is ivory-handled, not mahogany." | | paragraph | 4 | | substring | "mahogany cane" |
| | status | "true_positive" | | matchedExpected | | entry | "4415" | | detail | "cane" | | summary | "Lucien carries an ivory-handled cane per codex, but the passage says mahogany." |
| | location | | extractedText | "[not found in paragraph 4]" | | inBounds | true | | expectedText | "leaning on his mahogany cane" | | locationAccurate | false |
|
| | 7 | | parsed | | entry | "4415" | | detail | "eyeColor" | | explanation | "The codex says Lucien is heterochromatic — one amber, one black. Both amber is incorrect." | | paragraph | 4 | | substring | "Both his amber eyes" |
| | status | "true_positive" | | matchedExpected | | entry | "4415" | | detail | "eyeColor" | | summary | "Lucien has heterochromatic eyes (one amber, one black), but the passage says both amber." |
| | location | | extractedText | "[not found in paragraph 4]" | | inBounds | true | | expectedText | "Both his amber eyes were fixed" | | locationAccurate | false |
|
| | 8 | | parsed | | entry | "859" | | detail | "ruler" | | explanation | "The codex says Somnia is ruled by Prince Asmodeus, not Prince Lilith. Prince Lilith rules Luxuria." | | paragraph | 6 | | substring | "their master, Prince Lilith" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 6]" | | inBounds | true | | expectedText | "Prince Belphegor's agents are kidnapping humans" | | locationAccurate | false |
| | closestExpected | | entry | "855" | | detail | "ruler" | | summary | "Avaros is Prince Mammon's realm per codex, but Tomás says Prince Belphegor's agents operate there." |
| | reason | "entry mismatch: got \"859\", expected \"855\"" |
| | 9 | | parsed | | entry | "4422" | | detail | "eyeColor" | | explanation | "The codex says Father Cormac's eye color is pale blue, not dark brown." | | paragraph | 4 | | substring | "his dark brown eyes" |
| | status | "true_positive" | | matchedExpected | | entry | "4422" | | detail | "eyeColor" | | summary | "Father Cormac has pale blue eyes per codex, but the passage says dark brown eyes." |
| | location | | extractedText | "his dark brown eyes" | | inBounds | true | | expectedText | "his dark brown eyes troubled" | | locationAccurate | true |
|
| | 10 | | parsed | | entry | "6004" | | detail | "identification" | | explanation | "The codex says the Parish Guard uses rowan-wood rosaries, not cedar." | | paragraph | 4 | | substring | "cedar rosary beads" |
| | status | "false_positive" | | location | | extractedText | "cedar rosary beads" | | 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 \"identification\", expected \"headquarters\"" |
| | 11 | | parsed | | entry | "862" | | detail | "ruler" | | explanation | "Lilith is Prince of Luxuria, but the context (Somnian Cult) implies a misattribution. However, the codex entry for Somnia lists Prince Asmodeus; Lilith is not the Somnian ruler." | | paragraph | 6 | | substring | "Prince Lilith" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 6]" | | inBounds | true | | expectedText | "Prince Belphegor's agents are kidnapping humans" | | locationAccurate | false |
| | closestExpected | | entry | "855" | | detail | "ruler" | | summary | "Avaros is Prince Mammon's realm per codex, but Tomás says Prince Belphegor's agents operate there." |
| | reason | "entry mismatch: got \"862\", expected \"855\"" |
| | 12 | | parsed | | entry | "856" | | detail | "currentLocation" | | explanation | "The codex says the Veil Market is under Camden, not Shoreditch." | | paragraph | 7 | | substring | "abandoned station under Shoreditch" |
| | status | "true_positive" | | matchedExpected | | entry | "856" | | detail | "currentLocation" | | summary | "The Veil Market is under Camden per codex, but Wei-Lin says Shoreditch." |
| | location | | extractedText | "abandoned station under Shoreditch" | | inBounds | true | | expectedText | "abandoned station under Shoreditch" | | locationAccurate | true |
|
| | 13 | | parsed | | entry | "6006" | | detail | "logo" | | explanation | "The codex says the Blackthorn Security logo is a thorned branch inside a shield, not a sword inside a circle." | | paragraph | 8 | | substring | "their logo — the sword inside a circle" |
| | status | "true_positive" | | matchedExpected | | entry | "6006" | | detail | "logo" | | summary | "Blackthorn Security's logo is a thorned branch inside a shield per codex, but Kai says a sword inside a circle." |
| | location | | extractedText | "their logo — the sword inside a circle" | | inBounds | true | | expectedText | "the sword inside a circle" | | locationAccurate | true |
|
| | 14 | | parsed | | entry | "6001" | | detail | "identificationMark" | | explanation | "No direct conflict, but implied earlier in \"founded in 1066\" found in paragraph 10. The Wardens were founded in 1215 per codex." | | paragraph | 10 | | substring | "Wardens' official stance" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 10]" | | inBounds | true | | expectedText | "The Wardens were founded in 1066" | | locationAccurate | false |
| | closestExpected | | entry | "6001" | | detail | "foundingYear" | | summary | "The Wardens were founded in 1215 per codex, but Maggie says 1066." |
| | reason | "detail mismatch: got \"identificationMark\", expected \"foundingYear\"" |
| | 15 | | parsed | | entry | "6001" | | detail | "foundingYear" | | explanation | "Codex says founded in 1215." | | paragraph | 10 | | substring | "Wardens were founded in 1066" |
| | status | "true_positive" | | matchedExpected | | entry | "6001" | | detail | "foundingYear" | | summary | "The Wardens were founded in 1215 per codex, but Maggie says 1066." |
| | location | | extractedText | "[not found in paragraph 10]" | | inBounds | true | | expectedText | "The Wardens were founded in 1066" | | locationAccurate | false |
|
| | 16 | | parsed | | entry | "381?" | | detail | "" | | explanation | "(No codex entry for \"Madrid accent\" — Tomás is from Seville, not Madrid. Though the character is from Seville, his accent could be Madrid-like? Not a clear contradiction — he's from Seville, so his accent is Andalusian, not Madrid. Stretch, but codex says birthplace Seville, so \"Madrid accent\" is a contradiction if it distinctly indicates Madrid." |
| | status | "false_positive" | | location | | extractedText | (null) | | inBounds | false | | expectedText | "The Fae Grove in Hyde Park" | | locationAccurate | (null) |
| | 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 \"381?\", expected \"861\"" |
| | 17 | | parsed | | entry | "4417" | | detail | "birthplace" | | explanation | "Tomás is from Seville, Spain; Madrid accent is contradictory." | | paragraph | 11 | | substring | "His Madrid accent" |
| | status | "true_positive" | | matchedExpected | | entry | "4417" | | detail | "birthplace" | | summary | "Tomás was born in Seville per codex, but the passage implies Madrid accent." |
| | location | | extractedText | "[not found in paragraph 11]" | | inBounds | true | | expectedText | "His Madrid accent" | | locationAccurate | false |
|
|
| |