| 0 | | parsed | | entry | "4415" | | detail | "eyeColor" | | explanation | "The text says Lucien has both amber eyes, but the codex states he has heterochromatic eyes — one amber, one black." | | paragraph | 9 | | 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 9]" | | inBounds | true | | expectedText | "Both his amber eyes were fixed" | | locationAccurate | false |
|
|
| 1 | | parsed | | entry | "4424" | | detail | "eyeColor" | | explanation | "The text says Isolde has pale blue eyes, but the codex states she has pale lavender eyes." | | paragraph | 3 | | substring | "Her pale blue eyes" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 3]" | | inBounds | true | | expectedText | "Her pale blue eyes, unblinking" | | locationAccurate | false |
| | closestExpected | | entry | "4424" | | detail | "eyeColor" | | summary | "Isolde has pale lavender eyes per codex, but the passage says pale blue eyes." |
| | reason | "paragraph mismatch, reported 3, expected 1" |
|
| 2 | | parsed | | entry | "4417" | | detail | "scar" | | explanation | "The text says Tomás has a scar on his right forearm, but the codex states he has a scar running along his left forearm." | | paragraph | 25 | | substring | "His scarred right forearm" |
| | status | "true_positive" | | matchedExpected | | entry | "4417" | | detail | "scar" | | summary | "Tomás has a scar on his left forearm per codex, but the passage says right forearm." |
| | location | | extractedText | (null) | | inBounds | false | | expectedText | "His scarred right forearm" | | locationAccurate | (null) |
|
|
| 3 | | parsed | | entry | "6006" | | detail | "logo" | | explanation | "The text describes Blackthorn Security's logo as a sword inside a circle, but the codex states it is a thorned branch inside a shield." | | paragraph | 18 | | 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 | "[not found in paragraph 18]" | | inBounds | true | | expectedText | "the sword inside a circle" | | locationAccurate | false |
|
|
| 4 | | parsed | | entry | "7002" | | detail | "signedYear" | | explanation | "The text states the Covenant was signed in 1066, but the codex states it was signed in 1215." | | paragraph | 11 | | substring | "The Covenant of Separation — the 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 | "[not found in paragraph 11]" | | inBounds | true | | expectedText | "the old treaty from 1066" | | locationAccurate | false |
|
|
| 5 | | parsed | | entry | "6001" | | detail | "foundingYear" | | explanation | "The text states the Wardens were founded in 1066, but the codex states they were founded in 1215." | | paragraph | 26 | | substring | "The 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 | (null) | | inBounds | false | | expectedText | "The Wardens were founded in 1066" | | locationAccurate | (null) |
|
|
| 6 | | parsed | | entry | "4421" | | detail | "tattoo" | | explanation | "The text says Yasmin's flame serpent tattoo is on her right arm, but the codex states it is on her left arm." | | paragraph | 14 | | substring | "The flame serpent tattoo on her right arm" |
| | status | "true_positive" | | matchedExpected | | entry | "4421" | | detail | "tattoo" | | summary | "Yasmin's flame serpent tattoo is on her left arm per codex, but the passage says right arm." |
| | location | | extractedText | "[not found in paragraph 14]" | | inBounds | true | | expectedText | "tattoo on her right arm" | | locationAccurate | false |
|
|
| 7 | | parsed | | entry | "2005" | | detail | "containerColor" | | explanation | "The text describes Dream Dust as stored in red glass vials sealed with white wax, but the codex states it is stored in cobalt-blue glass vials sealed with black wax." | | paragraph | 10 | | substring | "stored in little red glass vials, sealed with white wax" |
| | status | "true_positive" | | matchedExpected | | entry | "2005" | | detail | "containerColor" | | summary | "Dream Dust is stored in cobalt-blue vials per codex, but Isolde says red glass vials." |
| | location | | extractedText | "[not found in paragraph 10]" | | inBounds | true | | expectedText | "little red glass vials" | | locationAccurate | false |
|
|
| 8 | | parsed | | entry | "4422" | | detail | "rosary" | | explanation | "The text says Father Cormac has cedar rosary beads, but the codex states he has a rosary made of rowan wood beads." | | paragraph | 11 | | substring | "his cedar rosary beads" |
| | status | "true_positive" | | matchedExpected | | entry | "4422" | | detail | "rosary" | | summary | "Cormac carries a rowan wood rosary per codex, but the passage says cedar." |
| | location | | extractedText | "[not found in paragraph 11]" | | inBounds | true | | expectedText | "his cedar rosary beads" | | locationAccurate | false |
|
|
| 9 | | parsed | | entry | "4414" | | detail | "glasses" | | explanation | "The text describes Eva's glasses as square, but the codex states they are round glasses." | | paragraph | 4 | | substring | "Her square glasses" |
| | status | "true_positive" | | matchedExpected | | entry | "4414" | | detail | "glasses" | | summary | "Eva wears round glasses per codex, but the passage says square glasses." |
| | location | | extractedText | "[not found in paragraph 4]" | | inBounds | true | | expectedText | "Her square glasses kept fogging" | | locationAccurate | false |
|
|
| 10 | | parsed | | entry | "4416" | | detail | "hair" | | explanation | "The text describes Father Cormac as having thinning ginger hair, but the codex states Detective Harlow Quinn has closely cropped salt-and-pepper hair. (Note: This is a character confusion — the ginger hair belongs to Father Cormac, not Detective Quinn, but the text incorrectly attributes it to the priest in a way that contradicts the codex's description of Detective Quinn's hair.)" | | paragraph | 8 | | substring | "beneath his thinning ginger hair" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 8]" | | inBounds | true | | expectedText | "his natural black hair falling into his face" | | locationAccurate | false |
| | closestExpected | | entry | "4420" | | detail | "hair" | | summary | "Kai has dyed electric-blue hair per codex, but the passage says natural black hair." |
| | reason | "entry mismatch: got \"4416\", expected \"4420\"" |
|
| 11 | | parsed | | entry | "4422" | | detail | "hair" | | explanation | "The text describes Father Cormac's hair as thinning ginger, but the codex states he has thinning ginger hair. (This is actually correct — no violation here. The text accurately describes Father Cormac's hair.)" | | paragraph | 8 | | substring | "beneath his thinning ginger hair" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 8]" | | inBounds | true | | expectedText | "his dark brown eyes troubled" | | locationAccurate | false |
| | closestExpected | | entry | "4422" | | detail | "eyeColor" | | summary | "Father Cormac has pale blue eyes per codex, but the passage says dark brown eyes." |
| | reason | "detail mismatch: got \"hair\", expected \"eyeColor\"" |
|
| 12 | | parsed | | entry | "4414" | | detail | "hair" | | explanation | "The text describes Eva's hair as curly red, which matches the codex. (No violation.)" | | paragraph | 4 | | substring | "her curly red hair escaping from under a wool hat" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 4]" | | inBounds | true | | expectedText | "Her square glasses kept fogging" | | locationAccurate | false |
| | closestExpected | | entry | "4414" | | detail | "glasses" | | summary | "Eva wears round glasses per codex, but the passage says square glasses." |
| | reason | "detail mismatch: got \"hair\", expected \"glasses\"" |
|
| 13 | | parsed | | entry | "4424" | | detail | "footprints" | | explanation | "The text says Isolde's bare feet leave clear prints, but the codex states she leaves no footprints when she walks." | | paragraph | 3 | | substring | "her bare feet leaving clear prints in the soft earth" |
| | status | "true_positive" | | matchedExpected | | entry | "4424" | | detail | "footprints" | | summary | "Isolde leaves no footprints per codex, but the passage says she leaves clear prints." |
| | location | | extractedText | "her bare feet leaving clear prints in the soft earth" | | inBounds | true | | expectedText | "her bare feet leaving clear prints in the soft earth" | | locationAccurate | true |
|
|
| 14 | | parsed | | entry | "4419" | | detail | "eyeColor" | | explanation | "The text says Maggie has green eyes, but the codex states she has sharp grey eyes." | | paragraph | 19 | | substring | "Her keen green eyes" |
| | status | "true_positive" | | matchedExpected | | entry | "4419" | | detail | "eyeColor" | | summary | "Maggie has grey eyes per codex, but the passage says green." |
| | location | | extractedText | (null) | | inBounds | false | | expectedText | "Her keen green eyes" | | locationAccurate | (null) |
|
|
| 15 | | parsed | | entry | "4413" | | detail | "signetRing" | | explanation | "The text mentions Silas rubbing his left knee, which is correct per the codex (old knee injury). (No violation.)" | | paragraph | 27 | | substring | "He rubbed his left knee" |
| | status | "false_positive" | | location | | extractedText | (null) | | inBounds | false | | expectedText | "" | | locationAccurate | (null) |
|
|
| 16 | | parsed | | entry | "4413" | | detail | "signetRing" | | explanation | "The text mentions Lucien adjusting his suit cuff, which is consistent with his tailored charcoal suits. (No violation.)" | | paragraph | 9 | | substring | "adjusting the cuff of his charcoal suit" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 9]" | | inBounds | true | | expectedText | "" | | locationAccurate | false |
|
|
| 17 | | parsed | | entry | "4415" | | detail | "cane" | | explanation | "The text describes Lucien's cane as mahogany, but the codex states it is ivory-handled. (The cane material is not specified in the codex, only the handle, so this is not necessarily a violation.)" | | paragraph | 9 | | substring | "leaning on his 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 9]" | | inBounds | true | | expectedText | "leaning on his mahogany cane" | | locationAccurate | false |
|
|
| 18 | | parsed | | entry | "4413" | | detail | "signetRing" | | explanation | "The text mentions Silas rubbing his left knee, which is correct per the codex (old knee injury). (No violation.)" | | paragraph | 27 | | substring | "He rubbed his left knee" |
| | status | "false_positive" | | location | | extractedText | (null) | | inBounds | false | | expectedText | "" | | locationAccurate | (null) |
|
|
| 19 | | parsed | | entry | "4413" | | detail | "beard" | | explanation | "The text does not describe Silas's beard, so no violation." | | paragraph | 27 | | substring | "Silas, who had been standing silently at the edge of the grove" |
| | status | "false_positive" | | location | | extractedText | (null) | | inBounds | false | | expectedText | "" | | locationAccurate | (null) |
|
|
| 20 | | parsed | | entry | "4413" | | detail | "hair" | | explanation | "The text does not describe Silas's hair, so no violation." | | paragraph | 27 | | substring | "Silas, who had been standing silently at the edge of the grove" |
| | status | "false_positive" | | location | | extractedText | (null) | | inBounds | false | | expectedText | "his natural black hair falling into his face" | | locationAccurate | (null) |
| | closestExpected | | entry | "4420" | | detail | "hair" | | summary | "Kai has dyed electric-blue hair per codex, but the passage says natural black hair." |
| | reason | "entry mismatch: got \"4413\", expected \"4420\"" |
|
| 21 | | parsed | | entry | "4413" | | detail | "eyeColor" | | explanation | "The text describes Silas's eyes as hazel, which matches the codex. (No violation.)" | | paragraph | 27 | | substring | "His hazel eyes were grave" |
| | status | "false_positive" | | location | | extractedText | (null) | | inBounds | false | | expectedText | "Her pale blue eyes, unblinking" | | locationAccurate | (null) |
| | closestExpected | | entry | "4424" | | detail | "eyeColor" | | summary | "Isolde has pale lavender eyes per codex, but the passage says pale blue eyes." |
| | reason | "entry mismatch: got \"4413\", expected \"4424\"" |
|
| 22 | | parsed | | entry | "4413" | | detail | "height" | | explanation | "The text does not describe Silas's height, so no violation." | | paragraph | 27 | | substring | "Silas, who had been standing silently at the edge of the grove" |
| | status | "false_positive" | | location | | extractedText | (null) | | inBounds | false | | expectedText | "" | | locationAccurate | (null) |
|
|
| 23 | | parsed | | entry | "4413" | | detail | "age" | | explanation | "The text does not describe Silas's age, so no violation." | | paragraph | 27 | | substring | "Silas, who had been standing silently at the edge of the grove" |
| | status | "false_positive" | | location | | extractedText | (null) | | inBounds | false | | expectedText | "" | | locationAccurate | (null) |
|
|
| 24 | | parsed | | entry | "4413" | | detail | "limp" | | explanation | "The text does not describe Silas's limp, so no violation." | | paragraph | 27 | | substring | "Silas, who had been standing silently at the edge of the grove" |
| | status | "false_positive" | | location | | extractedText | (null) | | inBounds | false | | expectedText | "" | | locationAccurate | (null) |
|
|
| 25 | | parsed | | entry | "4413" | | detail | "signetRing" | | explanation | "The text does not describe Silas's signet ring, so no violation." | | paragraph | 27 | | substring | "Silas, who had been standing silently at the edge of the grove" |
| | status | "false_positive" | | location | | extractedText | (null) | | inBounds | false | | expectedText | "" | | locationAccurate | (null) |
|
|
| 26 | | parsed | | entry | "4413" | | detail | "description" | | explanation | "The text does not describe Silas's bearing, so no violation." | | paragraph | 27 | | substring | "Silas, who had been standing silently at the edge of the grove" |
| | status | "false_positive" | | location | | extractedText | (null) | | inBounds | false | | expectedText | "" | | locationAccurate | (null) |
|
|
| 27 | | parsed | | entry | "4413" | | detail | "backstory" | | explanation | "The text does not describe Silas's backstory, so no violation." | | paragraph | 27 | | substring | "Silas, who had been standing silently at the edge of the grove" |
| | status | "false_positive" | | location | | extractedText | (null) | | inBounds | false | | expectedText | "" | | locationAccurate | (null) |
|
|
| 28 | | parsed | | entry | "4414" | | detail | "height" | | explanation | "The text does not describe Eva's height, so no violation." | | paragraph | 4 | | substring | "Eva was beside her" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 4]" | | 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 \"height\", expected \"glasses\"" |
|
| 29 | | parsed | | entry | "4414" | | detail | "age" | | explanation | "The text does not describe Eva's age, so no violation." | | paragraph | 4 | | substring | "Eva was beside her" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 4]" | | 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\"" |
|
| 30 | | parsed | | entry | "4414" | | detail | "freckles" | | explanation | "The text does not describe Eva's freckles, so no violation." | | paragraph | 4 | | substring | "Eva was beside her" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 4]" | | 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 \"freckles\", expected \"glasses\"" |
|
| 31 | | parsed | | entry | "4414" | | detail | "nervousHabit" | | explanation | "The text does not describe Eva's nervous habit, so no violation." | | paragraph | 4 | | substring | "Eva was beside her" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 4]" | | inBounds | true | | expectedText | "Her square glasses kept fogging" | | locationAccurate | false |
| | closestExpected | | entry | "4414" | | detail | "glasses" | | summary | "Eva wears round glasses per codex, but the passage says square glasses." |
| | reason | "detail mismatch: got \"nervousHabit\", expected \"glasses\"" |
|
| 32 | | parsed | | entry | "4414" | | detail | "description" | | explanation | "The text does not describe Eva's bearing, so no violation." | | paragraph | 4 | | substring | "Eva was beside her" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 4]" | | 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 \"description\", expected \"glasses\"" |
|
| 33 | | parsed | | entry | "4414" | | detail | "backstory" | | explanation | "The text does not describe Eva's backstory, so no violation." | | paragraph | 4 | | substring | "Eva was beside her" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 4]" | | 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 \"backstory\", expected \"glasses\"" |
|
| 34 | | parsed | | entry | "4415" | | detail | "height" | | explanation | "The text does not describe Lucien's height, so no violation." | | paragraph | 9 | | substring | "Lucien drawled, leaning on his mahogany cane" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 9]" | | inBounds | true | | expectedText | "leaning on his mahogany cane" | | locationAccurate | false |
| | closestExpected | | entry | "4415" | | detail | "cane" | | summary | "Lucien carries an ivory-handled cane per codex, but the passage says mahogany." |
| | reason | "detail mismatch: got \"height\", expected \"cane\"" |
|
| 35 | | parsed | | entry | "4415" | | detail | "age" | | explanation | "The text does not describe Lucien's age, so no violation." | | paragraph | 9 | | substring | "Lucien drawled, leaning on his mahogany cane" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 9]" | | 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\"" |
|
| 36 | | parsed | | entry | "4415" | | detail | "dress" | | explanation | "The text describes Lucien wearing a charcoal suit, which matches the codex. (No violation.)" | | paragraph | 9 | | substring | "adjusting the cuff of his charcoal suit" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 9]" | | inBounds | true | | expectedText | "leaning on his mahogany cane" | | locationAccurate | false |
| | closestExpected | | entry | "4415" | | detail | "cane" | | summary | "Lucien carries an ivory-handled cane per codex, but the passage says mahogany." |
| | reason | "detail mismatch: got \"dress\", expected \"cane\"" |
|
| 37 | | parsed | | entry | "4415" | | detail | "description" | | explanation | "The text does not describe Lucien's bearing, so no violation." | | paragraph | 9 | | substring | "Lucien drawled, leaning on his mahogany cane" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 9]" | | 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 \"description\", expected \"cane\"" |
|
| 38 | | parsed | | entry | "4415" | | detail | "backstory" | | explanation | "The text does not describe Lucien's backstory, so no violation." | | paragraph | 9 | | substring | "Lucien drawled, leaning on his mahogany cane" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 9]" | | inBounds | true | | expectedText | "leaning on his mahogany cane" | | locationAccurate | false |
| | closestExpected | | entry | "4415" | | detail | "cane" | | summary | "Lucien carries an ivory-handled cane per codex, but the passage says mahogany." |
| | reason | "detail mismatch: got \"backstory\", expected \"cane\"" |
|
| 39 | | parsed | | entry | "4416" | | detail | "bearing" | | explanation | "The text describes Father Cormac's bearing, not Detective Quinn's. (No violation.)" | | paragraph | 8 | | substring | "Father Cormac crossed himself, his dark brown eyes troubled" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 8]" | | inBounds | true | | expectedText | "" | | locationAccurate | false |
|
|
| 40 | | parsed | | entry | "4416" | | detail | "description" | | explanation | "The text describes Father Cormac, not Detective Quinn. (No violation.)" | | paragraph | 8 | | substring | "Father Cormac crossed himself, his dark brown eyes troubled" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 8]" | | inBounds | true | | expectedText | "" | | locationAccurate | false |
|
|
| 41 | | parsed | | entry | "4416" | | detail | "backstory" | | explanation | "The text describes Father Cormac, not Detective Quinn. (No violation.)" | | paragraph | 8 | | substring | "Father Cormac crossed himself, his dark brown eyes troubled" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 8]" | | inBounds | true | | expectedText | "" | | locationAccurate | false |
|
|
| 42 | | parsed | | entry | "4417" | | detail | "height" | | explanation | "The text does not describe Tomás's height, so no violation." | | paragraph | 25 | | substring | "Tomás, who had been quietly checking medical supplies in his bag" |
| | status | "false_positive" | | location | | extractedText | (null) | | inBounds | false | | expectedText | "His scarred right forearm" | | locationAccurate | (null) |
| | 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 \"height\", expected \"scar\"" |
|
| 43 | | parsed | | entry | "4417" | | detail | "age" | | explanation | "The text does not describe Tomás's age, so no violation." | | paragraph | 25 | | substring | "Tomás, who had been quietly checking medical supplies in his bag" |
| | status | "false_positive" | | location | | extractedText | (null) | | inBounds | false | | expectedText | "His scarred right forearm" | | locationAccurate | (null) |
| | 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\"" |
|
| 44 | | parsed | | entry | "4417" | | detail | "skinTone" | | explanation | "The text does not describe Tomás's skin tone, so no violation." | | paragraph | 25 | | substring | "Tomás, who had been quietly checking medical supplies in his bag" |
| | status | "false_positive" | | location | | extractedText | (null) | | inBounds | false | | expectedText | "His scarred right forearm" | | locationAccurate | (null) |
| | closestExpected | | entry | "4417" | | detail | "scar" | | summary | "Tomás has a scar on his left forearm per codex, but the passage says right forearm." |
| | reason | "detail mismatch: got \"skinTone\", expected \"scar\"" |
|
| 45 | | parsed | | entry | "4417" | | detail | "medallion" | | explanation | "The text does not describe Tomás's medallion, so no violation." | | paragraph | 25 | | substring | "Tomás, who had been quietly checking medical supplies in his bag" |
| | status | "false_positive" | | location | | extractedText | (null) | | inBounds | false | | expectedText | "His scarred right forearm" | | locationAccurate | (null) |
| | closestExpected | | entry | "4417" | | detail | "scar" | | summary | "Tomás has a scar on his left forearm per codex, but the passage says right forearm." |
| | reason | "detail mismatch: got \"medallion\", expected \"scar\"" |
|
| 46 | | parsed | | entry | "4417" | | detail | "birthplace" | | explanation | "The text does not describe Tomás's birthplace, so no violation." | | paragraph | 25 | | substring | "Tomás, who had been quietly checking medical supplies in his bag" |
| | 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 | (null) | | inBounds | false | | expectedText | "His Madrid accent" | | locationAccurate | (null) |
|
|
| 47 | | parsed | | entry | "4417" | | detail | "description" | | explanation | "The text does not describe Tomás's bearing, so no violation." | | paragraph | 25 | | substring | "Tomás, who had been quietly checking medical supplies in his bag" |
| | status | "false_positive" | | location | | extractedText | (null) | | inBounds | false | | expectedText | "His scarred right forearm" | | locationAccurate | (null) |
| | 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 \"description\", expected \"scar\"" |
|
| 48 | | parsed | | entry | "4417" | | detail | "backstory" | | explanation | "The text does not describe Tomás's backstory, so no violation." | | paragraph | 25 | | substring | "Tomás, who had been quietly checking medical supplies in his bag" |
| | status | "false_positive" | | location | | extractedText | (null) | | inBounds | false | | expectedText | "His scarred right forearm" | | locationAccurate | (null) |
| | 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 \"backstory\", expected \"scar\"" |
|
| 49 | | parsed | | entry | "4418" | | detail | "height" | | explanation | "The text does not describe Nyx's height, so no violation." | | paragraph | 24 | | substring | "Nyx materialized from the shadow of a standing stone" |
| | status | "false_positive" | | location | | extractedText | (null) | | inBounds | false | | expectedText | "their glowing blue eyes" | | locationAccurate | (null) |
| | closestExpected | | entry | "4418" | | detail | "eyeColor" | | summary | "Nyx has violet eyes per codex, but the passage says blue." |
| | reason | "detail mismatch: got \"height\", expected \"eyeColor\"" |
|
| 50 | | parsed | | entry | "4418" | | detail | "age" | | explanation | "The text does not describe Nyx's age, so no violation." | | paragraph | 24 | | substring | "Nyx materialized from the shadow of a standing stone" |
| | status | "false_positive" | | location | | extractedText | (null) | | inBounds | false | | expectedText | "their glowing blue eyes" | | locationAccurate | (null) |
| | closestExpected | | entry | "4418" | | detail | "eyeColor" | | summary | "Nyx has violet eyes per codex, but the passage says blue." |
| | reason | "detail mismatch: got \"age\", expected \"eyeColor\"" |
|
| 51 | | parsed | | entry | "4418" | | detail | "form" | | explanation | "The text describes Nyx materializing, which is consistent with their form as a Shade. (No violation.)" | | paragraph | 24 | | substring | "Nyx materialized from the shadow of a standing stone" |
| | status | "false_positive" | | location | | extractedText | (null) | | inBounds | false | | expectedText | "their glowing blue eyes" | | locationAccurate | (null) |
| | closestExpected | | entry | "4418" | | detail | "eyeColor" | | summary | "Nyx has violet eyes per codex, but the passage says blue." |
| | reason | "detail mismatch: got \"form\", expected \"eyeColor\"" |
|
| 52 | | parsed | | entry | "4418" | | detail | "voice" | | explanation | "The text describes Nyx's voice, which matches the codex. (No violation.)" | | paragraph | 24 | | substring | "they whispered, their voice like wind through dead leaves" |
| | status | "false_positive" | | location | | extractedText | (null) | | inBounds | false | | expectedText | "their glowing blue eyes" | | locationAccurate | (null) |
| | closestExpected | | entry | "4418" | | detail | "eyeColor" | | summary | "Nyx has violet eyes per codex, but the passage says blue." |
| | reason | "detail mismatch: got \"voice\", expected \"eyeColor\"" |
|
| 53 | | parsed | | entry | "4418" | | detail | "description" | | explanation | "The text does not describe Nyx's bearing, so no violation." | | paragraph | 24 | | substring | "Nyx materialized from the shadow of a standing stone" |
| | status | "false_positive" | | location | | extractedText | (null) | | inBounds | false | | expectedText | "their glowing blue eyes" | | locationAccurate | (null) |
| | closestExpected | | entry | "4418" | | detail | "eyeColor" | | summary | "Nyx has violet eyes per codex, but the passage says blue." |
| | reason | "detail mismatch: got \"description\", expected \"eyeColor\"" |
|
| 54 | | parsed | | entry | "4418" | | detail | "backstory" | | explanation | "The text does not describe Nyx's backstory, so no violation." | | paragraph | 24 | | substring | "Nyx materialized from the shadow of a standing stone" |
| | status | "false_positive" | | location | | extractedText | (null) | | inBounds | false | | expectedText | "their glowing blue eyes" | | locationAccurate | (null) |
| | closestExpected | | entry | "4418" | | detail | "eyeColor" | | summary | "Nyx has violet eyes per codex, but the passage says blue." |
| | reason | "detail mismatch: got \"backstory\", expected \"eyeColor\"" |
|
| 55 | | parsed | | entry | "4419" | | detail | "height" | | explanation | "The text does not describe Maggie's height, so no violation." | | paragraph | 19 | | substring | "Maggie rapped her oak walking stick against a stone" |
| | status | "false_positive" | | location | | extractedText | (null) | | inBounds | false | | expectedText | "her oak walking stick" | | locationAccurate | (null) |
| | closestExpected | | entry | "4419" | | detail | "walkingStick" | | summary | "Maggie carries a blackthorn stick per codex, but the passage says oak." |
| | reason | "detail mismatch: got \"height\", expected \"walkingStick\"" |
|
| 56 | | parsed | | entry | "4419" | | detail | "age" | | explanation | "The text does not describe Maggie's age, so no violation." | | paragraph | 19 | | substring | "Maggie rapped her oak walking stick against a stone" |
| | status | "false_positive" | | location | | extractedText | (null) | | inBounds | false | | expectedText | "her oak walking stick" | | locationAccurate | (null) |
| | 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\"" |
|
| 57 | | parsed | | entry | "4419" | | detail | "glasses" | | explanation | "The text does not describe Maggie's glasses, so no violation." | | paragraph | 19 | | substring | "Maggie rapped her oak walking stick against a stone" |
| | status | "false_positive" | | location | | extractedText | (null) | | inBounds | false | | expectedText | "her oak walking stick" | | locationAccurate | (null) |
| | closestExpected | | entry | "4419" | | detail | "walkingStick" | | summary | "Maggie carries a blackthorn stick per codex, but the passage says oak." |
| | reason | "detail mismatch: got \"glasses\", expected \"walkingStick\"" |
|
| 58 | | parsed | | entry | "4419" | | detail | "walkingStick" | | explanation | "The text describes Maggie's walking stick as oak, which matches the codex. (No violation.)" | | paragraph | 19 | | substring | "Maggie rapped her oak walking stick against a stone" |
| | status | "true_positive" | | matchedExpected | | entry | "4419" | | detail | "walkingStick" | | summary | "Maggie carries a blackthorn stick per codex, but the passage says oak." |
| | location | | extractedText | (null) | | inBounds | false | | expectedText | "her oak walking stick" | | locationAccurate | (null) |
|
|
| 59 | | parsed | | entry | "4419" | | detail | "build" | | explanation | "The text does not describe Maggie's build, so no violation." | | paragraph | 19 | | substring | "Maggie rapped her oak walking stick against a stone" |
| | status | "false_positive" | | location | | extractedText | (null) | | inBounds | false | | expectedText | "her oak walking stick" | | locationAccurate | (null) |
| | closestExpected | | entry | "4419" | | detail | "walkingStick" | | summary | "Maggie carries a blackthorn stick per codex, but the passage says oak." |
| | reason | "detail mismatch: got \"build\", expected \"walkingStick\"" |
|
| 60 | | parsed | | entry | "4419" | | detail | "description" | | explanation | "The text does not describe Maggie's bearing, so no violation." | | paragraph | 19 | | substring | "Maggie rapped her oak walking stick against a stone" |
| | status | "false_positive" | | location | | extractedText | (null) | | inBounds | false | | expectedText | "her oak walking stick" | | locationAccurate | (null) |
| | closestExpected | | entry | "4419" | | detail | "walkingStick" | | summary | "Maggie carries a blackthorn stick per codex, but the passage says oak." |
| | reason | "detail mismatch: got \"description\", expected \"walkingStick\"" |
|
| 61 | | parsed | | entry | "4419" | | detail | "backstory" | | explanation | "The text does not describe Maggie's backstory, so no violation." | | paragraph | 19 | | substring | "Maggie rapped her oak walking stick against a stone" |
| | status | "false_positive" | | location | | extractedText | (null) | | inBounds | false | | expectedText | "her oak walking stick" | | locationAccurate | (null) |
| | closestExpected | | entry | "4419" | | detail | "walkingStick" | | summary | "Maggie carries a blackthorn stick per codex, but the passage says oak." |
| | reason | "detail mismatch: got \"backstory\", expected \"walkingStick\"" |
|
| 62 | | parsed | | entry | "4420" | | detail | "height" | | explanation | "The text does not describe Kai's height, so no violation." | | paragraph | 17 | | substring | "Kai corrected from behind his laptop screen" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 17]" | | 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 \"height\", expected \"hair\"" |
|
| 63 | | parsed | | entry | "4420" | | detail | "age" | | explanation | "The text does not describe Kai's age, so no violation." | | paragraph | 17 | | substring | "Kai corrected from behind his laptop screen" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 17]" | | 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\"" |
|
| 64 | | parsed | | entry | "4420" | | detail | "headphones" | | explanation | "The text does not describe Kai's headphones, so no violation." | | paragraph | 17 | | substring | "Kai corrected from behind his laptop screen" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 17]" | | inBounds | true | | expectedText | "his natural black hair falling into his face" | | locationAccurate | false |
| | closestExpected | | entry | "4420" | | detail | "hair" | | summary | "Kai has dyed electric-blue hair per codex, but the passage says natural black hair." |
| | reason | "detail mismatch: got \"headphones\", expected \"hair\"" |
|
| 65 | | parsed | | entry | "4420" | | detail | "wristTattoo" | | explanation | "The text does not describe Kai's wrist tattoo, so no violation." | | paragraph | 17 | | substring | "Kai corrected from behind his laptop screen" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 17]" | | inBounds | true | | expectedText | "his natural black hair falling into his face" | | locationAccurate | false |
| | closestExpected | | entry | "4420" | | detail | "hair" | | summary | "Kai has dyed electric-blue hair per codex, but the passage says natural black hair." |
| | reason | "detail mismatch: got \"wristTattoo\", expected \"hair\"" |
|
| 66 | | parsed | | entry | "4420" | | detail | "build" | | explanation | "The text does not describe Kai's build, so no violation." | | paragraph | 17 | | substring | "Kai corrected from behind his laptop screen" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 17]" | | inBounds | true | | expectedText | "his natural black hair falling into his face" | | locationAccurate | false |
| | closestExpected | | entry | "4420" | | detail | "hair" | | summary | "Kai has dyed electric-blue hair per codex, but the passage says natural black hair." |
| | reason | "detail mismatch: got \"build\", expected \"hair\"" |
|
| 67 | | parsed | | entry | "4420" | | detail | "description" | | explanation | "The text does not describe Kai's bearing, so no violation." | | paragraph | 17 | | substring | "Kai corrected from behind his laptop screen" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 17]" | | 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 \"description\", expected \"hair\"" |
|
| 68 | | parsed | | entry | "4420" | | detail | "backstory" | | explanation | "The text does not describe Kai's backstory, so no violation." | | paragraph | 17 | | substring | "Kai corrected from behind his laptop screen" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 17]" | | 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 \"backstory\", expected \"hair\"" |
|
| 69 | | parsed | | entry | "4421" | | detail | "height" | | explanation | "The text does not describe Yasmin's height, so no violation." | | paragraph | 14 | | substring | "Yasmin uncorked a small vial and sniffed its contents" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 14]" | | 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 \"height\", expected \"tattoo\"" |
|
| 70 | | parsed | | entry | "4421" | | detail | "age" | | explanation | "The text does not describe Yasmin's age, so no violation." | | paragraph | 14 | | substring | "Yasmin uncorked a small vial and sniffed its contents" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 14]" | | 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\"" |
|
| 71 | | parsed | | entry | "4421" | | detail | "skinTone" | | explanation | "The text does not describe Yasmin's skin tone, so no violation." | | paragraph | 14 | | substring | "Yasmin uncorked a small vial and sniffed its contents" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 14]" | | 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 \"skinTone\", expected \"tattoo\"" |
|
| 72 | | parsed | | entry | "4421" | | detail | "scent" | | explanation | "The text does not describe Yasmin's scent, so no violation." | | paragraph | 14 | | substring | "Yasmin uncorked a small vial and sniffed its contents" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 14]" | | inBounds | true | | expectedText | "tattoo on her right arm" | | locationAccurate | false |
| | closestExpected | | entry | "4421" | | detail | "tattoo" | | summary | "Yasmin's flame serpent tattoo is on her left arm per codex, but the passage says right arm." |
| | reason | "detail mismatch: got \"scent\", expected \"tattoo\"" |
|
| 73 | | parsed | | entry | "4421" | | detail | "description" | | explanation | "The text does not describe Yasmin's bearing, so no violation." | | paragraph | 14 | | substring | "Yasmin uncorked a small vial and sniffed its contents" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 14]" | | inBounds | true | | expectedText | "tattoo on her right arm" | | locationAccurate | false |
| | closestExpected | | entry | "4421" | | detail | "tattoo" | | summary | "Yasmin's flame serpent tattoo is on her left arm per codex, but the passage says right arm." |
| | reason | "detail mismatch: got \"description\", expected \"tattoo\"" |
|
| 74 | | parsed | | entry | "4421" | | detail | "backstory" | | explanation | "The text does not describe Yasmin's backstory, so no violation." | | paragraph | 14 | | substring | "Yasmin uncorked a small vial and sniffed its contents" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 14]" | | 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 \"backstory\", expected \"tattoo\"" |
|
| 75 | | parsed | | entry | "4422" | | detail | "height" | | explanation | "The text does not describe Father Cormac's height, so no violation." | | paragraph | 11 | | substring | "Father Cormac crossed himself, his dark brown eyes troubled" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 11]" | | inBounds | true | | expectedText | "his dark brown eyes troubled" | | locationAccurate | false |
| | closestExpected | | entry | "4422" | | detail | "eyeColor" | | summary | "Father Cormac has pale blue eyes per codex, but the passage says dark brown eyes." |
| | reason | "detail mismatch: got \"height\", expected \"eyeColor\"" |
|
| 76 | | parsed | | entry | "4422" | | detail | "age" | | explanation | "The text does not describe Father Cormac's age, so no violation." | | paragraph | 11 | | substring | "Father Cormac crossed himself, his dark brown eyes troubled" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 11]" | | 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\"" |
|
| 77 | | parsed | | entry | "4422" | | detail | "complexion" | | explanation | "The text does not describe Father Cormac's complexion, so no violation." | | paragraph | 11 | | substring | "Father Cormac crossed himself, his dark brown eyes troubled" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 11]" | | inBounds | true | | expectedText | "his dark brown eyes troubled" | | locationAccurate | false |
| | closestExpected | | entry | "4422" | | detail | "eyeColor" | | summary | "Father Cormac has pale blue eyes per codex, but the passage says dark brown eyes." |
| | reason | "detail mismatch: got \"complexion\", expected \"eyeColor\"" |
|
| 78 | | parsed | | entry | "4422" | | detail | "rosary" | | explanation | "The text says Father Cormac has cedar rosary beads, but the codex states he has a rosary made of rowan wood beads." | | paragraph | 11 | | substring | "He gripped his cedar rosary beads tightly" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 11]" | | inBounds | true | | expectedText | "his dark brown eyes troubled" | | locationAccurate | false |
| | closestExpected | | entry | "4422" | | detail | "eyeColor" | | summary | "Father Cormac has pale blue eyes per codex, but the passage says dark brown eyes." |
| | reason | "detail mismatch: got \"rosary\", expected \"eyeColor\"" |
|
| 79 | | parsed | | entry | "4422" | | detail | "collar" | | explanation | "The text does not describe Father Cormac's collar, so no violation." | | paragraph | 11 | | substring | "Father Cormac crossed himself, his dark brown eyes troubled" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 11]" | | inBounds | true | | expectedText | "his dark brown eyes troubled" | | locationAccurate | false |
| | closestExpected | | entry | "4422" | | detail | "eyeColor" | | summary | "Father Cormac has pale blue eyes per codex, but the passage says dark brown eyes." |
| | reason | "detail mismatch: got \"collar\", expected \"eyeColor\"" |
|
| 80 | | parsed | | entry | "4422" | | detail | "description" | | explanation | "The text does not describe Father Cormac's bearing, so no violation." | | paragraph | 11 | | substring | "Father Cormac crossed himself, his dark brown eyes troubled" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 11]" | | inBounds | true | | expectedText | "his dark brown eyes troubled" | | locationAccurate | false |
| | closestExpected | | entry | "4422" | | detail | "eyeColor" | | summary | "Father Cormac has pale blue eyes per codex, but the passage says dark brown eyes." |
| | reason | "detail mismatch: got \"description\", expected \"eyeColor\"" |
|
| 81 | | parsed | | entry | "4422" | | detail | "backstory" | | explanation | "The text does not describe Father Cormac's backstory, so no violation." | | paragraph | 11 | | substring | "Father Cormac crossed himself, his dark brown eyes troubled" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 11]" | | 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 \"backstory\", expected \"eyeColor\"" |
|
| 82 | | parsed | | entry | "4423" | | detail | "height" | | explanation | "The text does not describe Wei-Lin's height, so no violation." | | paragraph | 15 | | substring | "Wei-Lin, leaning against one of the standing stones with his arms folded" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 15]" | | 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 \"height\", expected \"tattoo\"" |
|
| 83 | | parsed | | entry | "4423" | | detail | "age" | | explanation | "The text does not describe Wei-Lin's age, so no violation." | | paragraph | 15 | | substring | "Wei-Lin, leaning against one of the standing stones with his arms folded" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 15]" | | 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\"" |
|
| 84 | | parsed | | entry | "4423" | | detail | "build" | | explanation | "The text does not describe Wei-Lin's build, so no violation." | | paragraph | 15 | | substring | "Wei-Lin, leaning against one of the standing stones with his arms folded" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 15]" | | 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 \"build\", expected \"tattoo\"" |
|
| 85 | | parsed | | entry | "4423" | | detail | "tattoo" | | explanation | "The text describes Wei-Lin's tattoo as being on his chest, but the codex states it is on his back." | | paragraph | 15 | | substring | "The edge of the dragon tattoo on his chest was visible above his collar" |
| | status | "true_positive" | | matchedExpected | | entry | "4423" | | detail | "tattoo" | | summary | "Wei-Lin's dragon tattoo covers his back per codex, but the passage says chest." |
| | location | | extractedText | "[not found in paragraph 15]" | | inBounds | true | | expectedText | "the dragon tattoo on his chest" | | locationAccurate | false |
|
|
| 86 | | parsed | | entry | "4423" | | detail | "missingFinger" | | explanation | "The text does not describe Wei-Lin's missing finger, so no violation." | | paragraph | 15 | | substring | "Wei-Lin, leaning against one of the standing stones with his arms folded" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 15]" | | inBounds | true | | expectedText | "the dragon tattoo on his chest" | | locationAccurate | false |
| | closestExpected | | entry | "4423" | | detail | "tattoo" | | summary | "Wei-Lin's dragon tattoo covers his back per codex, but the passage says chest." |
| | reason | "detail mismatch: got \"missingFinger\", expected \"tattoo\"" |
|
| 87 | | parsed | | entry | "4423" | | detail | "description" | | explanation | "The text does not describe Wei-Lin's bearing, so no violation." | | paragraph | 15 | | substring | "Wei-Lin, leaning against one of the standing stones with his arms folded" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 15]" | | inBounds | true | | expectedText | "the dragon tattoo on his chest" | | locationAccurate | false |
| | closestExpected | | entry | "4423" | | detail | "tattoo" | | summary | "Wei-Lin's dragon tattoo covers his back per codex, but the passage says chest." |
| | reason | "detail mismatch: got \"description\", expected \"tattoo\"" |
|
| 88 | | parsed | | entry | "4423" | | detail | "backstory" | | explanation | "The text does not describe Wei-Lin's backstory, so no violation." | | paragraph | 15 | | substring | "Wei-Lin, leaning against one of the standing stones with his arms folded" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 15]" | | 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 \"backstory\", expected \"tattoo\"" |
|
| 89 | | parsed | | entry | "4424" | | detail | "height" | | explanation | "The text does not describe Isolde's height, so no violation." | | paragraph | 3 | | substring | "Isolde felt in her bones — or whatever passed for bones in her three-hundred-year-old Half-Fae body" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 3]" | | inBounds | true | | expectedText | "Her pale blue eyes, unblinking" | | locationAccurate | false |
| | closestExpected | | entry | "4424" | | detail | "eyeColor" | | summary | "Isolde has pale lavender eyes per codex, but the passage says pale blue eyes." |
| | reason | "detail mismatch: got \"height\", expected \"eyeColor\"" |
|
| 90 | | parsed | | entry | "4424" | | detail | "age" | | explanation | "The text describes Isolde as three hundred years old, which matches the codex. (No violation.)" | | paragraph | 3 | | substring | "Isolde felt in her bones — or whatever passed for bones in her three-hundred-year-old Half-Fae body" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 3]" | | inBounds | true | | expectedText | "Her pale blue eyes, unblinking" | | locationAccurate | false |
| | closestExpected | | entry | "4424" | | detail | "eyeColor" | | summary | "Isolde has pale lavender eyes per codex, but the passage says pale blue eyes." |
| | reason | "detail mismatch: got \"age\", expected \"eyeColor\"" |
|
| 91 | | parsed | | entry | "4424" | | detail | "appearance" | | explanation | "The text does not describe Isolde's appearance, so no violation." | | paragraph | 3 | | substring | "Isolde felt in her bones — or whatever passed for bones in her three-hundred-year-old Half-Fae body" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 3]" | | inBounds | true | | expectedText | "Her pale blue eyes, unblinking" | | locationAccurate | false |
| | closestExpected | | entry | "4424" | | detail | "eyeColor" | | summary | "Isolde has pale lavender eyes per codex, but the passage says pale blue eyes." |
| | reason | "detail mismatch: got \"appearance\", expected \"eyeColor\"" |
|
| 92 | | parsed | | entry | "4424" | | detail | "speech" | | explanation | "The text does not describe Isolde's speech, so no violation." | | paragraph | 3 | | substring | "Isolde felt in her bones — or whatever passed for bones in her three-hundred-year-old Half-Fae body" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 3]" | | inBounds | true | | expectedText | "Her pale blue eyes, unblinking" | | locationAccurate | false |
| | closestExpected | | entry | "4424" | | detail | "eyeColor" | | summary | "Isolde has pale lavender eyes per codex, but the passage says pale blue eyes." |
| | reason | "detail mismatch: got \"speech\", expected \"eyeColor\"" |
|
| 93 | | parsed | | entry | "4424" | | detail | "compulsion" | | explanation | "The text does not describe Isolde's compulsion, so no violation." | | paragraph | 3 | | substring | "Isolde felt in her bones — or whatever passed for bones in her three-hundred-year-old Half-Fae body" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 3]" | | inBounds | true | | expectedText | "Her pale blue eyes, unblinking" | | locationAccurate | false |
| | closestExpected | | entry | "4424" | | detail | "eyeColor" | | summary | "Isolde has pale lavender eyes per codex, but the passage says pale blue eyes." |
| | reason | "detail mismatch: got \"compulsion\", expected \"eyeColor\"" |
|
| 94 | | parsed | | entry | "4424" | | detail | "description" | | explanation | "The text does not describe Isolde's bearing, so no violation." | | paragraph | 3 | | substring | "Isolde felt in her bones — or whatever passed for bones in her three-hundred-year-old Half-Fae body" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 3]" | | inBounds | true | | expectedText | "Her pale blue eyes, unblinking" | | locationAccurate | false |
| | closestExpected | | entry | "4424" | | detail | "eyeColor" | | summary | "Isolde has pale lavender eyes per codex, but the passage says pale blue eyes." |
| | reason | "detail mismatch: got \"description\", expected \"eyeColor\"" |
|
| 95 | | parsed | | entry | "4424" | | detail | "backstory" | | explanation | "The text does not describe Isolde's backstory, so no violation." | | paragraph | 3 | | substring | "Isolde felt in her bones — or whatever passed for bones in her three-hundred-year-old Half-Fae body" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 3]" | | inBounds | true | | expectedText | "Her pale blue eyes, unblinking" | | locationAccurate | false |
| | closestExpected | | entry | "4424" | | detail | "eyeColor" | | summary | "Isolde has pale lavender eyes per codex, but the passage says pale blue eyes." |
| | reason | "detail mismatch: got \"backstory\", expected \"eyeColor\"" |
|
| 96 | | parsed | | entry | "853" | | detail | "ruler" | | explanation | "The text says Prince Lilith is the master of the Somnian Cult, but the codex states Prince Asmodeus is the ruler of Somnia." | | paragraph | 10 | | substring | "Their master, Prince Lilith, demands more dreamers for her garden of sleeping souls" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 10]" | | inBounds | true | | expectedText | "Prince Belphegor's agents are kidnapping humans" | | locationAccurate | false |
| | closestExpected | | entry | "855" | | detail | "ruler" | | summary | "Avaros is Prince Mammon's realm per codex, but Tomás says Prince Belphegor's agents operate there." |
| | reason | "entry mismatch: got \"853\", expected \"855\"" |
|
| 97 | | parsed | | entry | "862" | | detail | "ruler" | | explanation | "The text says Prince Lilith is the master of the Somnian Cult, but the codex states Prince Lilith is the ruler of Luxuria, not Somnia." | | paragraph | 10 | | substring | "Their master, Prince Lilith, demands more dreamers for her garden of sleeping souls" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 10]" | | 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\"" |
|
| 98 | | parsed | | entry | "859" | | detail | "ruler" | | explanation | "The text says Prince Lilith is the master of the Somnian Cult, but the codex states Prince Asmodeus is the ruler of Somnia." | | paragraph | 10 | | substring | "Their master, Prince Lilith, demands more dreamers for her garden of sleeping souls" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 10]" | | 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\"" |
|
| 99 | | parsed | | entry | "859" | | detail | "description" | | explanation | "The text describes Somnia as having a \"garden of sleeping souls,\" which is consistent with the codex's description of inhabitants sinking into eternal lethargy. (No violation.)" | | paragraph | 10 | | substring | "Their master, Prince Lilith, demands more dreamers for her garden of sleeping souls" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 10]" | | inBounds | true | | expectedText | "" | | locationAccurate | false |
|
|
| 100 | | parsed | | entry | "6003" | | detail | "master" | | explanation | "The text says Prince Lilith is the master of the Somnian Cult, but the codex states Prince Asmodeus is the master." | | paragraph | 10 | | substring | "Their master, Prince Lilith, demands more dreamers for her garden of sleeping souls" |
| | status | "true_positive" | | matchedExpected | | entry | "6003" | | detail | "master" | | summary | "The Somnian Cult serves Prince Asmodeus per codex, but Isolde says Prince Lilith." |
| | location | | extractedText | "[not found in paragraph 10]" | | inBounds | true | | expectedText | "Prince Lilith, demands more dreamers" | | locationAccurate | false |
|
|
| 101 | | parsed | | entry | "7001" | | detail | "solsticeEffect" | | explanation | "The text does not describe the Veil's solstice effect, so no violation." | | paragraph | 27 | | substring | "Silas, who had been standing silently at the edge of the grove, spoke at last" |
| | status | "false_positive" | | location | | extractedText | (null) | | inBounds | false | | expectedText | "" | | locationAccurate | (null) |
|
|
| 102 | | parsed | | entry | "7001" | | detail | "appearance" | | explanation | "The text does not describe the Veil's appearance, so no violation." | | paragraph | 27 | | substring | "Silas, who had been standing silently at the edge of the grove, spoke at last" |
| | status | "false_positive" | | location | | extractedText | (null) | | inBounds | false | | expectedText | "" | | locationAccurate | (null) |
|
|
| 103 | | parsed | | entry | "7001" | | detail | "monitoring" | | explanation | "The text does not describe the Veil's monitoring, so no violation." | | paragraph | 27 | | substring | "Silas, who had been standing silently at the edge of the grove, spoke at last" |
| | status | "false_positive" | | location | | extractedText | (null) | | inBounds | false | | expectedText | "" | | locationAccurate | (null) |
|
|
| 104 | | parsed | | entry | "7001" | | detail | "description" | | explanation | "The text does not describe the Veil, so no violation." | | paragraph | 27 | | substring | "Silas, who had been standing silently at the edge of the grove, spoke at last" |
| | status | "false_positive" | | location | | extractedText | (null) | | inBounds | false | | expectedText | "" | | locationAccurate | (null) |
|
|
| 105 | | parsed | | entry | "7002" | | detail | "signedYear" | | explanation | "The text states the Covenant was signed in 1066, but the codex states it was signed in 1215." | | paragraph | 11 | | substring | "The Covenant of Separation — the old treaty from 1066" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 11]" | | inBounds | true | | expectedText | "" | | locationAccurate | false |
|
|
| 106 | | parsed | | entry | "7002" | | detail | "signatories" | | explanation | "The text does not describe the Covenant's signatories, so no violation." | | paragraph | 11 | | substring | "The Covenant of Separation — the old treaty from 1066" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 11]" | | 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 \"signatories\", expected \"signedYear\"" |
|
| 107 | | parsed | | entry | "7002" | | detail | "enforcement" | | explanation | "The text does not describe the Covenant's enforcement, so no violation." | | paragraph | 11 | | substring | "The Covenant of Separation — the old treaty from 1066" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 11]" | | 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\"" |
|
| 108 | | parsed | | entry | "7002" | | detail | "physicalForm" | | explanation | "The text does not describe the Covenant's physical form, so no violation." | | paragraph | 11 | | substring | "The Covenant of Separation — the old treaty from 1066" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 11]" | | 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 \"physicalForm\", expected \"signedYear\"" |
|
| 109 | | parsed | | entry | "7002" | | detail | "description" | | explanation | "The text does not describe the Covenant, so no violation." | | paragraph | 11 | | substring | "The Covenant of Separation — the old treaty from 1066" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 11]" | | 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 \"description\", expected \"signedYear\"" |
|
| 110 | | parsed | | entry | "7003" | | detail | "peakActivity" | | explanation | "The text does not describe rift points' peak activity, so no violation." | | paragraph | 27 | | substring | "Silas, who had been standing silently at the edge of the grove, spoke at last" |
| | status | "false_positive" | | location | | extractedText | (null) | | inBounds | false | | expectedText | "" | | locationAccurate | (null) |
|
|
| 111 | | parsed | | entry | "7003" | | detail | "formation" | | explanation | "The text does not describe rift points' formation, so no violation." | | paragraph | 27 | | substring | "Silas, who had been standing silently at the edge of the grove, spoke at last" |
| | status | "false_positive" | | location | | extractedText | (null) | | inBounds | false | | expectedText | "" | | locationAccurate | (null) |
|
|
| 112 | | parsed | | entry | "7003" | | detail | "emission" | | explanation | "The text does not describe rift points' emission, so no violation." | | paragraph | 27 | | substring | "Silas, who had been standing silently at the edge of the grove, spoke at last" |
| | status | "false_positive" | | location | | extractedText | (null) | | inBounds | false | | expectedText | "" | | locationAccurate | (null) |
|
|
| 113 | | parsed | | entry | "7003" | | detail | "description" | | explanation | "The text does not describe rift points, so no violation." | | paragraph | 27 | | substring | "Silas, who had been standing silently at the edge of the grove, spoke at last" |
| | status | "false_positive" | | location | | extractedText | (null) | | inBounds | false | | expectedText | "" | | locationAccurate | (null) |
|
|
| 114 | | parsed | | entry | "7004" | | detail | "sealingMethod" | | explanation | "The text describes contracts being forced on humans, which is consistent with the codex's description of Helbound souls. (No violation.)" | | paragraph | 25 | | substring | "She'd escaped from a contract signed in Avaros — said Prince Belphegor's agents are kidnapping humans and forcing contracts on them" |
| | status | "false_positive" | | location | | extractedText | (null) | | inBounds | false | | expectedText | "" | | locationAccurate | (null) |
|
|
| 115 | | parsed | | entry | "7004" | | detail | "retention" | | explanation | "The text does not describe Helbound souls' retention, so no violation." | | paragraph | 25 | | substring | "She'd escaped from a contract signed in Avaros — said Prince Belphegor's agents are kidnapping humans and forcing contracts on them" |
| | status | "false_positive" | | location | | extractedText | (null) | | inBounds | false | | expectedText | "" | | locationAccurate | (null) |
|
|
| 116 | | parsed | | entry | "7004" | | detail | "freedom" | | explanation | "The text describes a contract being destroyed to break the bond, which matches the codex. (No violation.)" | | paragraph | 25 | | substring | "She managed to destroy her contract document while still in Avaros, which broke the bond" |
| | status | "false_positive" | | location | | extractedText | (null) | | inBounds | false | | expectedText | "" | | locationAccurate | (null) |
|
|
| 117 | | parsed | | entry | "7004" | | detail | "description" | | explanation | "The text does not describe Helbound souls, so no violation." | | paragraph | 25 | | substring | "She'd escaped from a contract signed in Avaros — said Prince Belphegor's agents are kidnapping humans and forcing contracts on them" |
| | status | "false_positive" | | location | | extractedText | (null) | | inBounds | false | | expectedText | "" | | locationAccurate | (null) |
|
|
| 118 | | parsed | | entry | "7005" | | detail | "requirement" | | explanation | "The text does not describe the Shade transformation requirement, so no violation." | | paragraph | 24 | | substring | "Nyx materialized from the shadow of a standing stone, their glowing blue eyes cutting through the twilight" |
| | status | "false_positive" | | location | | extractedText | (null) | | inBounds | false | | expectedText | "" | | locationAccurate | (null) |
|
|
| 119 | | parsed | | entry | "7005" | | detail | "physicalLoss" | | explanation | "The text does not describe the Shade transformation's physical loss, so no violation." | | paragraph | 24 | | substring | "Nyx materialized from the shadow of a standing stone, their glowing blue eyes cutting through the twilight" |
| | status | "false_positive" | | location | | extractedText | (null) | | inBounds | false | | expectedText | "" | | locationAccurate | (null) |
|
|
| 120 | | parsed | | entry | "7005" | | detail | "lostSenses" | | explanation | "The text does not describe the Shade transformation's lost senses, so no violation." | | paragraph | 24 | | substring | "Nyx materialized from the shadow of a standing stone, their glowing blue eyes cutting through the twilight" |
| | status | "false_positive" | | location | | extractedText | (null) | | inBounds | false | | expectedText | "" | | locationAccurate | (null) |
|
|
| 121 | | parsed | | entry | "7005" | | detail | "reversibility" | | explanation | "The text does not describe the Shade transformation's reversibility, so no violation." | | paragraph | 24 | | substring | "Nyx materialized from the shadow of a standing stone, their glowing blue eyes cutting through the twilight" |
| | status | "false_positive" | | location | | extractedText | (null) | | inBounds | false | | expectedText | "" | | locationAccurate | (null) |
|
|
| 122 | | parsed | | entry | "7005" | | detail | "description" | | explanation | "The text does not describe the Shade transformation, so no violation." | | paragraph | 24 | | substring | "Nyx materialized from the shadow of a standing stone, their glowing blue eyes cutting through the twilight" |
| | status | "false_positive" | | location | | extractedText | (null) | | inBounds | false | | expectedText | "" | | locationAccurate | (null) |
|
|
| 123 | | parsed | | entry | "854" | | detail | "signColor" | | explanation | "The text does not describe the Raven's Nest's sign color, so no violation." | | paragraph | 27 | | substring | "Silas, who had been standing silently at the edge of the grove, spoke at last" |
| | status | "false_positive" | | location | | extractedText | (null) | | inBounds | false | | expectedText | "" | | locationAccurate | (null) |
|
|
| 124 | | parsed | | entry | "854" | | detail | "secretRoom" | | explanation | "The text does not describe the Raven's Nest's secret room, so no violation." | | paragraph | 27 | | substring | "Silas, who had been standing silently at the edge of the grove, spoke at last" |
| | status | "false_positive" | | location | | extractedText | (null) | | inBounds | false | | expectedText | "" | | locationAccurate | (null) |
|
|
| 125 | | parsed | | entry | "854" | | detail | "description" | | explanation | "The text does not describe the Raven's Nest, so no violation." | | paragraph | 27 | | substring | "Silas, who had been standing silently at the edge of the grove, spoke at last" |
| | status | "false_positive" | | location | | extractedText | (null) | | inBounds | false | | expectedText | "" | | locationAccurate | (null) |
|
|
| 126 | | parsed | | entry | "855" | | detail | "ruler" | | explanation | "The text says Mammon rules Avaros, which matches the codex. (No violation.)" | | paragraph | 9 | | substring | "Mammon breaks it daily in Avaros" |
| | status | "true_positive" | | matchedExpected | | entry | "855" | | detail | "ruler" | | summary | "Avaros is Prince Mammon's realm per codex, but Tomás says Prince Belphegor's agents operate there." |
| | location | | extractedText | "[not found in paragraph 9]" | | inBounds | true | | expectedText | "Prince Belphegor's agents are kidnapping humans" | | locationAccurate | false |
|
|
| 127 | | parsed | | entry | "855" | | detail | "skyColor" | | explanation | "The text does not describe Avaros's sky color, so no violation." | | paragraph | 9 | | substring | "Mammon breaks it daily in Avaros" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 9]" | | 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 | "detail mismatch: got \"skyColor\", expected \"ruler\"" |
|
| 128 | | parsed | | entry | "855" | | detail | "description" | | explanation | "The text does not describe Avaros, so no violation." | | paragraph | 9 | | substring | "Mammon breaks it daily in Avaros" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 9]" | | 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 | "detail mismatch: got \"description\", expected \"ruler\"" |
|
| 129 | | parsed | | entry | "856" | | detail | "currentLocation" | | explanation | "The text says the Veil Market is under Shoreditch, but the codex states it is under Camden for this lunar cycle." | | paragraph | 16 | | substring | "Someone's been buying Fae-Forged Blades from the Veil Market — bronze daggers, they say, that can cut through wards. The market's moved to an abandoned station under Shoreditch for this lunar cycle" |
| | status | "true_positive" | | matchedExpected | | entry | "856" | | detail | "currentLocation" | | summary | "The Veil Market is under Camden per codex, but Wei-Lin says Shoreditch." |
| | location | | extractedText | "[not found in paragraph 16]" | | inBounds | true | | expectedText | "abandoned station under Shoreditch" | | locationAccurate | false |
|
|
| 130 | | parsed | | entry | "856" | | detail | "entryRequirement" | | explanation | "The text does not describe the Veil Market's entry requirement, so no violation." | | paragraph | 16 | | substring | "Someone's been buying Fae-Forged Blades from the Veil Market — bronze daggers, they say, that can cut through wards. The market's moved to an abandoned station under Shoreditch for this lunar cycle" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 16]" | | inBounds | true | | expectedText | "abandoned station under Shoreditch" | | locationAccurate | false |
| | closestExpected | | entry | "856" | | detail | "currentLocation" | | summary | "The Veil Market is under Camden per codex, but Wei-Lin says Shoreditch." |
| | reason | "detail mismatch: got \"entryRequirement\", expected \"currentLocation\"" |
|
| 131 | | parsed | | entry | "856" | | detail | "schedule" | | explanation | "The text does not describe the Veil Market's schedule, so no violation." | | paragraph | 16 | | substring | "Someone's been buying Fae-Forged Blades from the Veil Market — bronze daggers, they say, that can cut through wards. The market's moved to an abandoned station under Shoreditch for this lunar cycle" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 16]" | | inBounds | true | | expectedText | "abandoned station under Shoreditch" | | locationAccurate | false |
| | closestExpected | | entry | "856" | | detail | "currentLocation" | | summary | "The Veil Market is under Camden per codex, but Wei-Lin says Shoreditch." |
| | reason | "detail mismatch: got \"schedule\", expected \"currentLocation\"" |
|
| 132 | | parsed | | entry | "856" | | detail | "description" | | explanation | "The text does not describe the Veil Market, so no violation." | | paragraph | 16 | | substring | "Someone's been buying Fae-Forged Blades from the Veil Market — bronze daggers, they say, that can cut through wards. The market's moved to an abandoned station under Shoreditch for this lunar cycle" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 16]" | | inBounds | true | | expectedText | "abandoned station under Shoreditch" | | locationAccurate | false |
| | closestExpected | | entry | "856" | | detail | "currentLocation" | | summary | "The Veil Market is under Camden per codex, but Wei-Lin says Shoreditch." |
| | reason | "detail mismatch: got \"description\", expected \"currentLocation\"" |
|
| 133 | | parsed | | entry | "857" | | detail | "ruler" | | explanation | "The text says the Crimson Court has shifted to Irath, but the codex does not state where the Crimson Court is based. (No violation.)" | | paragraph | 9 | | substring | "their father — he says the Crimson Court's base of operations has shifted from Dymas to Irath" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 9]" | | inBounds | true | | expectedText | "Prince Belphegor's agents are kidnapping humans" | | locationAccurate | false |
| | closestExpected | | entry | "855" | | detail | "ruler" | | summary | "Avaros is Prince Mammon's realm per codex, but Tomás says Prince Belphegor's agents operate there." |
| | reason | "entry mismatch: got \"857\", expected \"855\"" |
|
| 134 | | parsed | | entry | "857" | | detail | "skyColor" | | explanation | "The text does not describe Irath's sky color, so no violation." | | paragraph | 9 | | substring | "their father — he says the Crimson Court's base of operations has shifted from Dymas to Irath" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 9]" | | inBounds | true | | expectedText | "" | | locationAccurate | false |
|
|
| 135 | | parsed | | entry | "857" | | detail | "description" | | explanation | "The text does not describe Irath, so no violation." | | paragraph | 9 | | substring | "their father — he says the Crimson Court's base of operations has shifted from Dymas to Irath" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 9]" | | inBounds | true | | expectedText | "" | | locationAccurate | false |
|
|
| 136 | | parsed | | entry | "858" | | detail | "cat" | | explanation | "The text does not describe Eva's flat's cat, so no violation." | | paragraph | 4 | | substring | "Eva was beside her, clutching her leather satchel with both hands, her curly red hair escaping from under a wool hat" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 4]" | | inBounds | true | | expectedText | "The Fae Grove in Hyde Park" | | locationAccurate | false |
| | closestExpected | | entry | "861" | | detail | "parkLocation" | | summary | "The Fae Grove is in Richmond Park per codex, but the passage says Hyde Park." |
| | reason | "entry mismatch: got \"858\", expected \"861\"" |
|
| 137 | | parsed | | entry | "858" | | detail | "security" | | explanation | "The text does not describe Eva's flat's security, so no violation." | | paragraph | 4 | | substring | "Eva was beside her, clutching her leather satchel with both hands, her curly red hair escaping from under a wool hat" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 4]" | | inBounds | true | | expectedText | "" | | locationAccurate | false |
|
|
| 138 | | parsed | | entry | "858" | | detail | "description" | | explanation | "The text does not describe Eva's flat, so no violation." | | paragraph | 4 | | substring | "Eva was beside her, clutching her leather satchel with both hands, her curly red hair escaping from under a wool hat" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 4]" | | inBounds | true | | expectedText | "" | | locationAccurate | false |
|
|
| 139 | | parsed | | entry | "859" | | detail | "ruler" | | explanation | "The text says Prince Lilith is the master of the Somnian Cult, but the codex states Prince Asmodeus is the ruler of Somnia." | | paragraph | 10 | | substring | "Their master, Prince Lilith, demands more dreamers for her garden of sleeping souls" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 10]" | | 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\"" |
|
| 140 | | parsed | | entry | "859" | | detail | "atmosphere" | | explanation | "The text does not describe Somnia's atmosphere, so no violation." | | paragraph | 10 | | substring | "Their master, Prince Lilith, demands more dreamers for her garden of sleeping souls" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 10]" | | inBounds | true | | expectedText | "" | | locationAccurate | false |
|
|
| 141 | | parsed | | entry | "859" | | detail | "description" | | explanation | "The text does not describe Somnia, so no violation." | | paragraph | 10 | | substring | "Their master, Prince Lilith, demands more dreamers for her garden of sleeping souls" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 10]" | | inBounds | true | | expectedText | "" | | locationAccurate | false |
|
|
| 142 | | parsed | | entry | "860" | | detail | "password" | | explanation | "The text does not describe Yasmin's apothecary's password, so no violation." | | paragraph | 14 | | substring | "Yasmin uncorked a small vial and sniffed its contents, her amber eyes narrowing" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 14]" | | inBounds | true | | expectedText | "" | | locationAccurate | false |
|
|
| 143 | | parsed | | entry | "860" | | detail | "frontStock" | | explanation | "The text does not describe Yasmin's apothecary's front stock, so no violation." | | paragraph | 14 | | substring | "Yasmin uncorked a small vial and sniffed its contents, her amber eyes narrowing" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 14]" | | inBounds | true | | expectedText | "" | | locationAccurate | false |
|
|
| 144 | | parsed | | entry | "860" | | detail | "backStock" | | explanation | "The text does not describe Yasmin's apothecary's back stock, so no violation." | | paragraph | 14 | | substring | "Yasmin uncorked a small vial and sniffed its contents, her amber eyes narrowing" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 14]" | | inBounds | true | | expectedText | "" | | locationAccurate | false |
|
|
| 145 | | parsed | | entry | "860" | | detail | "description" | | explanation | "The text does not describe Yasmin's apothecary, so no violation." | | paragraph | 14 | | substring | "Yasmin uncorked a small vial and sniffed its contents, her amber eyes narrowing" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 14]" | | inBounds | true | | expectedText | "" | | locationAccurate | false |
|
|
| 146 | | parsed | | entry | "861" | | detail | "parkLocation" | | explanation | "The text says the Fae Grove is in Hyde Park, but the codex states it is in Richmond Park." | | paragraph | 3 | | substring | "The Fae Grove in Hyde Park shimmered in the dying October light" |
| | status | "true_positive" | | matchedExpected | | entry | "861" | | detail | "parkLocation" | | summary | "The Fae Grove is in Richmond Park per codex, but the passage says Hyde Park." |
| | location | | extractedText | "[not found in paragraph 3]" | | inBounds | true | | expectedText | "The Fae Grove in Hyde Park" | | locationAccurate | false |
|
|
| 147 | | parsed | | entry | "861" | | detail | "standingStones" | | explanation | "The text describes the standing stones as elm, but the codex states they are oak standing stones." | | paragraph | 3 | | substring | "The ancient elm standing stones hummed with a resonance that Isolde felt in her bones" |
| | status | "true_positive" | | matchedExpected | | entry | "861" | | detail | "standingStones" | | summary | "The grove has oak standing stones per codex, but the passage says elm." |
| | location | | extractedText | "[not found in paragraph 3]" | | inBounds | true | | expectedText | "The ancient elm standing stones" | | locationAccurate | false |
|
|
| 148 | | parsed | | entry | "861" | | detail | "timeBehavior" | | explanation | "The text does not describe the Fae Grove's time behavior, so no violation." | | paragraph | 3 | | substring | "The Fae Grove in Hyde Park shimmered in the dying October light" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 3]" | | inBounds | true | | expectedText | "The Fae Grove in Hyde Park" | | locationAccurate | false |
| | closestExpected | | entry | "861" | | detail | "parkLocation" | | summary | "The Fae Grove is in Richmond Park per codex, but the passage says Hyde Park." |
| | reason | "detail mismatch: got \"timeBehavior\", expected \"parkLocation\"" |
|
| 149 | | parsed | | entry | "861" | | detail | "flora" | | explanation | "The text does not describe the Fae Grove's flora, so no violation." | | paragraph | 3 | | substring | "The Fae Grove in Hyde Park shimmered in the dying October light" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 3]" | | inBounds | true | | expectedText | "The Fae Grove in Hyde Park" | | locationAccurate | false |
| | closestExpected | | entry | "861" | | detail | "parkLocation" | | summary | "The Fae Grove is in Richmond Park per codex, but the passage says Hyde Park." |
| | reason | "detail mismatch: got \"flora\", expected \"parkLocation\"" |
|
| 150 | | parsed | | entry | "861" | | detail | "description" | | explanation | "The text does not describe the Fae Grove, so no violation." | | paragraph | 3 | | substring | "The Fae Grove in Hyde Park shimmered in the dying October light" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 3]" | | inBounds | true | | expectedText | "The Fae Grove in Hyde Park" | | locationAccurate | false |
| | closestExpected | | entry | "861" | | detail | "parkLocation" | | summary | "The Fae Grove is in Richmond Park per codex, but the passage says Hyde Park." |
| | reason | "detail mismatch: got \"description\", expected \"parkLocation\"" |
|
| 151 | | parsed | | entry | "862" | | detail | "ruler" | | explanation | "The text says Prince Lilith is the master of the Somnian Cult, but the codex states Prince Lilith is the ruler of Luxuria, not Somnia." | | paragraph | 10 | | substring | "Their master, Prince Lilith, demands more dreamers for her garden of sleeping souls" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 10]" | | 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\"" |
|
| 152 | | parsed | | entry | "862" | | detail | "skyColor" | | explanation | "The text does not describe Luxuria's sky color, so no violation." | | paragraph | 10 | | substring | "Their master, Prince Lilith, demands more dreamers for her garden of sleeping souls" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 10]" | | inBounds | true | | expectedText | "" | | locationAccurate | false |
|
|
| 153 | | parsed | | entry | "862" | | detail | "description" | | explanation | "The text does not describe Luxuria, so no violation." | | paragraph | 10 | | substring | "Their master, Prince Lilith, demands more dreamers for her garden of sleeping souls" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 10]" | | inBounds | true | | expectedText | "" | | locationAccurate | false |
|
|
| 154 | | parsed | | entry | "2001" | | detail | "gemstoneColor" | | explanation | "The text describes the Heartstone Pendant's stone as crimson, which matches the codex. (No violation.)" | | paragraph | 27 | | substring | "She pulled it out — the golden chain tangled in her fingers, the crimson stone glowing brighter than she'd ever seen" |
| | status | "false_positive" | | location | | extractedText | (null) | | inBounds | false | | expectedText | "the golden chain tangled in her fingers" | | locationAccurate | (null) |
| | closestExpected | | entry | "2001" | | detail | "chainMaterial" | | summary | "The Heartstone Pendant has a silver chain per codex, but the passage says golden chain." |
| | reason | "detail mismatch: got \"gemstoneColor\", expected \"chainMaterial\"" |
|
| 155 | | parsed | | entry | "2001" | | detail | "chainMaterial" | | explanation | "The text describes the Heartstone Pendant's chain as golden, but the codex states it is silver." | | paragraph | 27 | | substring | "She pulled it out — the golden chain tangled in her fingers, the crimson stone glowing brighter than she'd ever seen" |
| | 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 | (null) | | inBounds | false | | expectedText | "the golden chain tangled in her fingers" | | locationAccurate | (null) |
|
|
| 156 | | parsed | | entry | "2001" | | detail | "size" | | explanation | "The text does not describe the Heartstone Pendant's size, so no violation." | | paragraph | 27 | | substring | "She pulled it out — the golden chain tangled in her fingers, the crimson stone glowing brighter than she'd ever seen" |
| | status | "false_positive" | | location | | extractedText | (null) | | inBounds | false | | expectedText | "the golden chain tangled in her fingers" | | locationAccurate | (null) |
| | closestExpected | | entry | "2001" | | detail | "chainMaterial" | | summary | "The Heartstone Pendant has a silver chain per codex, but the passage says golden chain." |
| | reason | "detail mismatch: got \"size\", expected \"chainMaterial\"" |
|
| 157 | | parsed | | entry | "2001" | | detail | "behavior" | | explanation | "The text describes the Heartstone Pendant's behavior as glowing brighter, which is consistent with its behavior of pulsing with warmth near Hel portals. (No violation.)" | | paragraph | 27 | | substring | "She pulled it out — the crimson stone glowing brighter than she'd ever seen" |
| | status | "false_positive" | | location | | extractedText | (null) | | inBounds | false | | expectedText | "the golden chain tangled in her fingers" | | locationAccurate | (null) |
| | closestExpected | | entry | "2001" | | detail | "chainMaterial" | | summary | "The Heartstone Pendant has a silver chain per codex, but the passage says golden chain." |
| | reason | "detail mismatch: got \"behavior\", expected \"chainMaterial\"" |
|
| 158 | | parsed | | entry | "2001" | | detail | "glow" | | explanation | "The text describes the Heartstone Pendant's glow as brighter, which is consistent with its faint inner glow. (No violation.)" | | paragraph | 27 | | substring | "She pulled it out — the crimson stone glowing brighter than she'd ever seen" |
| | status | "false_positive" | | location | | extractedText | (null) | | inBounds | false | | expectedText | "the golden chain tangled in her fingers" | | locationAccurate | (null) |
| | closestExpected | | entry | "2001" | | detail | "chainMaterial" | | summary | "The Heartstone Pendant has a silver chain per codex, but the passage says golden chain." |
| | reason | "detail mismatch: got \"glow\", expected \"chainMaterial\"" |
|
| 159 | | parsed | | entry | "2001" | | detail | "description" | | explanation | "The text does not describe the Heartstone Pendant, so no violation." | | paragraph | 27 | | substring | "She pulled it out — the crimson stone glowing brighter than she'd ever seen" |
| | status | "false_positive" | | location | | extractedText | (null) | | inBounds | false | | expectedText | "the golden chain tangled in her fingers" | | locationAccurate | (null) |
| | closestExpected | | entry | "2001" | | detail | "chainMaterial" | | summary | "The Heartstone Pendant has a silver chain per codex, but the passage says golden chain." |
| | reason | "detail mismatch: got \"description\", expected \"chainMaterial\"" |
|
| 160 | | parsed | | entry | "2002" | | detail | "pageMaterial" | | explanation | "The text describes a contract document, but does not specify its material. (No violation.)" | | paragraph | 25 | | substring | "She managed to destroy her contract document while still in Avaros, which broke the bond" |
| | status | "false_positive" | | location | | extractedText | (null) | | inBounds | false | | expectedText | "bronze daggers, they say" | | locationAccurate | (null) |
| | closestExpected | | entry | "2006" | | detail | "material" | | summary | "Fae-Forged Blades are moonsilver per codex, but Wei-Lin says bronze." |
| | reason | "entry mismatch: got \"2002\", expected \"2006\"" |
|
| 161 | | parsed | | entry | "2002" | | detail | "binding" | | explanation | "The text does not describe the Ledger's binding, so no violation." | | paragraph | 25 | | substring | "She managed to destroy her contract document while still in Avaros, which broke the bond" |
| | status | "false_positive" | | location | | extractedText | (null) | | inBounds | false | | expectedText | "" | | locationAccurate | (null) |
|
|
| 162 | | parsed | | entry | "2002" | | detail | "inkColor" | | explanation | "The text does not describe the Ledger's ink color, so no violation." | | paragraph | 25 | | substring | "She managed to destroy her contract document while still in Avaros, which broke the bond" |
| | status | "false_positive" | | location | | extractedText | (null) | | inBounds | false | | expectedText | "" | | locationAccurate | (null) |
|
|
| 163 | | parsed | | entry | "2002" | | detail | "power" | | explanation | "The text does not describe the Ledger's power, so no violation." | | paragraph | 25 | | substring | "She managed to destroy her contract document while still in Avaros, which broke the bond" |
| | status | "false_positive" | | location | | extractedText | (null) | | inBounds | false | | expectedText | "" | | locationAccurate | (null) |
|
|
| 164 | | parsed | | entry | "2002" | | detail | "description" | | explanation | "The text does not describe the Ledger, so no violation." | | paragraph | 25 | | substring | "She managed to destroy her contract document while still in Avaros, which broke the bond" |
| | status | "false_positive" | | location | | extractedText | (null) | | inBounds | false | | expectedText | "" | | locationAccurate | (null) |
|
|
| 165 | | parsed | | entry | "2003" | | detail | "material" | | explanation | "The text describes Fae-Forged Blades as bronze, but the codex states they are made of moonsilver." | | paragraph | 16 | | substring | "Someone's been buying Fae-Forged Blades from the Veil Market — bronze daggers, they say, that can cut through wards" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 16]" | | inBounds | true | | expectedText | "sealed with white wax" | | locationAccurate | false |
| | closestExpected | | entry | "2005" | | detail | "sealMaterial" | | summary | "Dream Dust vials are sealed with black wax per codex, but Isolde says white wax." |
| | reason | "entry mismatch: got \"2003\", expected \"2005\"" |
|
| 166 | | parsed | | entry | "2003" | | detail | "power" | | explanation | "The text describes Fae-Forged Blades as cutting through wards, which matches the codex. (No violation.)" | | paragraph | 16 | | substring | "Someone's been buying Fae-Forged Blades from the Veil Market — bronze daggers, they say, that can cut through wards" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 16]" | | inBounds | true | | expectedText | "" | | locationAccurate | false |
|
|
| 167 | | parsed | | entry | "2003" | | detail | "creator" | | explanation | "The text does not describe the Fae-Forged Blade's creator, so no violation." | | paragraph | 16 | | substring | "Someone's been buying Fae-Forged Blades from the Veil Market — bronze daggers, they say, that can cut through wards" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 16]" | | inBounds | true | | expectedText | "" | | locationAccurate | false |
|
|
| 168 | | parsed | | entry | "2003" | | detail | "description" | | explanation | "The text does not describe the Fae-Forged Blade, so no violation." | | paragraph | 16 | | substring | "Someone's been buying Fae-Forged Blades from the Veil Market — bronze daggers, they say, that can cut through wards" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 16]" | | inBounds | true | | expectedText | "" | | locationAccurate | false |
|
|
| 169 | | parsed | | entry | "2004" | | detail | "casingMaterial" | | explanation | "The text does not describe the Veil Compass's casing material, so no violation." | | paragraph | 17 | | substring | "Kai corrected from behind his laptop screen, his natural black hair falling into his face" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 17]" | | inBounds | true | | expectedText | "bronze daggers, they say" | | locationAccurate | false |
| | closestExpected | | entry | "2006" | | detail | "material" | | summary | "Fae-Forged Blades are moonsilver per codex, but Wei-Lin says bronze." |
| | reason | "entry mismatch: got \"2004\", expected \"2006\"" |
|
| 170 | | parsed | | entry | "2004" | | detail | "faceMarkings" | | explanation | "The text does not describe the Veil Compass's face markings, so no violation." | | paragraph | 17 | | substring | "Kai corrected from behind his laptop screen, his natural black hair falling into his face" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 17]" | | inBounds | true | | expectedText | "" | | locationAccurate | false |
|
|
| 171 | | parsed | | entry | "2004" | | detail | "needle" | | explanation | "The text does not describe the Veil Compass's needle, so no violation." | | paragraph | 17 | | substring | "Kai corrected from behind his laptop screen, his natural black hair falling into his face" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 17]" | | inBounds | true | | expectedText | "" | | locationAccurate | false |
|
|
| 172 | | parsed | | entry | "2004" | | detail | "patina" | | explanation | "The text does not describe the Veil Compass's patina, so no violation." | | paragraph | 17 | | substring | "Kai corrected from behind his laptop screen, his natural black hair falling into his face" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 17]" | | inBounds | true | | expectedText | "" | | locationAccurate | false |
|
|
| 173 | | parsed | | entry | "2004" | | detail | "creator" | | explanation | "The text does not describe the Veil Compass's creator, so no violation." | | paragraph | 17 | | substring | "Kai corrected from behind his laptop screen, his natural black hair falling into his face" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 17]" | | inBounds | true | | expectedText | "" | | locationAccurate | false |
|
|
| 174 | | parsed | | entry | "2004" | | detail | "description" | | explanation | "The text does not describe the Veil Compass, so no violation." | | paragraph | 17 | | substring | "Kai corrected from behind his laptop screen, his natural black hair falling into his face" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 17]" | | inBounds | true | | expectedText | "" | | locationAccurate | false |
|
|
| 175 | | parsed | | entry | "2005" | | detail | "color" | | explanation | "The text does not describe Dream Dust's color, so no violation." | | paragraph | 14 | | substring | "Yasmin uncorked a small vial and sniffed its contents, her amber eyes narrowing" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 14]" | | inBounds | true | | expectedText | "sealed with white wax" | | locationAccurate | false |
| | closestExpected | | entry | "2005" | | detail | "sealMaterial" | | summary | "Dream Dust vials are sealed with black wax per codex, but Isolde says white wax." |
| | reason | "detail mismatch: got \"color\", expected \"sealMaterial\"" |
|
| 176 | | parsed | | entry | "2005" | | detail | "containerColor" | | explanation | "The text describes Dream Dust as being in small vials, but does not specify the color. (No violation.)" | | paragraph | 14 | | substring | "Yasmin uncorked a small vial and sniffed its contents, her amber eyes narrowing" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 14]" | | inBounds | true | | expectedText | "sealed with white wax" | | locationAccurate | false |
| | closestExpected | | entry | "2005" | | detail | "sealMaterial" | | summary | "Dream Dust vials are sealed with black wax per codex, but Isolde says white wax." |
| | reason | "detail mismatch: got \"containerColor\", expected \"sealMaterial\"" |
|
| 177 | | parsed | | entry | "2005" | | detail | "sealMaterial" | | explanation | "The text does not describe Dream Dust's seal material, so no violation." | | paragraph | 14 | | substring | "Yasmin uncorked a small vial and sniffed its contents, her amber eyes narrowing" |
| | 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 14]" | | inBounds | true | | expectedText | "sealed with white wax" | | locationAccurate | false |
|
|
| 178 | | parsed | | entry | "2005" | | detail | "effect" | | explanation | "The text does not describe Dream Dust's effect, so no violation." | | paragraph | 14 | | substring | "Yasmin uncorked a small vial and sniffed its contents, her amber eyes narrowing" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 14]" | | inBounds | true | | expectedText | "little red glass vials" | | locationAccurate | false |
| | closestExpected | | entry | "2005" | | detail | "containerColor" | | summary | "Dream Dust is stored in cobalt-blue vials per codex, but Isolde says red glass vials." |
| | reason | "detail mismatch: got \"effect\", expected \"containerColor\"" |
|
| 179 | | parsed | | entry | "2005" | | detail | "sideEffect" | | explanation | "The text does not describe Dream Dust's side effect, so no violation." | | paragraph | 14 | | substring | "Yasmin uncorked a small vial and sniffed its contents, her amber eyes narrowing" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 14]" | | inBounds | true | | expectedText | "little red glass vials" | | locationAccurate | false |
| | closestExpected | | entry | "2005" | | detail | "containerColor" | | summary | "Dream Dust is stored in cobalt-blue vials per codex, but Isolde says red glass vials." |
| | reason | "detail mismatch: got \"sideEffect\", expected \"containerColor\"" |
|
| 180 | | parsed | | entry | "2005" | | detail | "description" | | explanation | "The text does not describe Dream Dust, so no violation." | | paragraph | 14 | | substring | "Yasmin uncorked a small vial and sniffed its contents, her amber eyes narrowing" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 14]" | | inBounds | true | | expectedText | "little red glass vials" | | locationAccurate | false |
| | closestExpected | | entry | "2005" | | detail | "containerColor" | | summary | "Dream Dust is stored in cobalt-blue vials per codex, but Isolde says red glass vials." |
| | reason | "detail mismatch: got \"description\", expected \"containerColor\"" |
|
| 181 | | parsed | | entry | "2006" | | detail | "material" | | explanation | "The text describes the Fae-Forged Blade as warm, which is consistent with its material being moonsilver. (No violation.)" | | paragraph | 3 | | substring | "Aurora arrived first, the Fae-Forged Blade warm at her hip" |
| | status | "true_positive" | | matchedExpected | | entry | "2006" | | detail | "material" | | summary | "Fae-Forged Blades are moonsilver per codex, but Wei-Lin says bronze." |
| | location | | extractedText | "[not found in paragraph 3]" | | inBounds | true | | expectedText | "bronze daggers, they say" | | locationAccurate | false |
|
|
| 182 | | parsed | | entry | "2006" | | detail | "shape" | | explanation | "The text does not describe the Fae-Forged Blade's shape, so no violation." | | paragraph | 3 | | substring | "Aurora arrived first, the Fae-Forged Blade warm at her hip" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 3]" | | inBounds | true | | expectedText | "the Fae-Forged Blade warm at her hip" | | locationAccurate | false |
| | closestExpected | | entry | "2006" | | detail | "temperature" | | summary | "The Fae-Forged Blade is always cold per codex, but the passage says warm." |
| | reason | "detail mismatch: got \"shape\", expected \"temperature\"" |
|
| 183 | | parsed | | entry | "2006" | | detail | "temperature" | | explanation | "The text describes the Fae-Forged Blade as warm, which matches the codex. (No violation.)" | | paragraph | 3 | | substring | "Aurora arrived first, the Fae-Forged Blade warm at her hip" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 3]" | | inBounds | true | | expectedText | "the Fae-Forged Blade warm at her hip" | | locationAccurate | false |
| | closestExpected | | entry | "2006" | | detail | "temperature" | | summary | "The Fae-Forged Blade is always cold per codex, but the passage says warm." |
| | reason | "paragraph mismatch, reported 3, expected 2" |
|
| 184 | | parsed | | entry | "2006" | | detail | "glow" | | explanation | "The text does not describe the Fae-Forged Blade's glow, so no violation." | | paragraph | 3 | | substring | "Aurora arrived first, the Fae-Forged Blade warm at her hip" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 3]" | | inBounds | true | | expectedText | "the Fae-Forged Blade warm at her hip" | | locationAccurate | false |
| | closestExpected | | entry | "2006" | | detail | "temperature" | | summary | "The Fae-Forged Blade is always cold per codex, but the passage says warm." |
| | reason | "detail mismatch: got \"glow\", expected \"temperature\"" |
|
| 185 | | parsed | | entry | "2006" | | detail | "power" | | explanation | "The text does not describe the Fae-Forged Blade's power, so no violation." | | paragraph | 3 | | substring | "Aurora arrived first, the Fae-Forged Blade warm at her hip" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 3]" | | inBounds | true | | expectedText | "the Fae-Forged Blade warm at her hip" | | locationAccurate | false |
| | closestExpected | | entry | "2006" | | detail | "temperature" | | summary | "The Fae-Forged Blade is always cold per codex, but the passage says warm." |
| | reason | "detail mismatch: got \"power\", expected \"temperature\"" |
|
| 186 | | parsed | | entry | "2006" | | detail | "givenTo" | | explanation | "The text does not describe who the Fae-Forged Blade was given to, so no violation." | | paragraph | 3 | | substring | "Aurora arrived first, the Fae-Forged Blade warm at her hip" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 3]" | | inBounds | true | | expectedText | "the Fae-Forged Blade warm at her hip" | | locationAccurate | false |
| | closestExpected | | entry | "2006" | | detail | "temperature" | | summary | "The Fae-Forged Blade is always cold per codex, but the passage says warm." |
| | reason | "detail mismatch: got \"givenTo\", expected \"temperature\"" |
|
| 187 | | parsed | | entry | "2006" | | detail | "description" | | explanation | "The text does not describe the Fae-Forged Blade, so no violation." | | paragraph | 3 | | substring | "Aurora arrived first, the Fae-Forged Blade warm at her hip" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 3]" | | inBounds | true | | expectedText | "the Fae-Forged Blade warm at her hip" | | locationAccurate | false |
| | closestExpected | | entry | "2006" | | detail | "temperature" | | summary | "The Fae-Forged Blade is always cold per codex, but the passage says warm." |
| | reason | "detail mismatch: got \"description\", expected \"temperature\"" |
|