| 0 | | parsed | | entry | "4412" | | detail | "eyeColor" | | explanation | "The text says Silas has hazel eyes, but the codex states his eye color is hazel (correct match, no violation here). Wait, the codex lists Silas' eyeColor as hazel, so this is not a violation. No issue here." | | paragraph | 7 | | substring | "hazel eyes studying her from beneath bushy brows" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 7]" | | inBounds | true | | expectedText | "the crescent-shaped scar on her right wrist" | | locationAccurate | false |
| | closestExpected | | entry | "4412" | | detail | "scar" | | summary | "Aurora's crescent scar is on her left wrist per codex, but the passage says right wrist." |
| | reason | "detail mismatch: got \"eyeColor\", expected \"scar\"" |
|
| 1 | | parsed | | entry | "4412" | | detail | "hair" | | explanation | "The text correctly matches the codex description of Silas' hair as \"grey-streaked auburn\". No violation." | | paragraph | 7 | | substring | "His grey-streaked auburn hair was neatly combed" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 7]" | | inBounds | true | | expectedText | "the crescent-shaped scar on her right wrist" | | locationAccurate | false |
| | closestExpected | | entry | "4412" | | detail | "scar" | | summary | "Aurora's crescent scar is on her left wrist per codex, but the passage says right wrist." |
| | reason | "detail mismatch: got \"hair\", expected \"scar\"" |
|
| 2 | | parsed | | entry | "4412" | | detail | "hair" | | explanation | "The codex states Silas' beard is auburn, not dark brown. The text incorrectly describes his beard as dark brown." | | paragraph | 7 | | substring | "dark brown beard" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 7]" | | inBounds | true | | expectedText | "the crescent-shaped scar on her right wrist" | | locationAccurate | false |
| | closestExpected | | entry | "4412" | | detail | "scar" | | summary | "Aurora's crescent scar is on her left wrist per codex, but the passage says right wrist." |
| | reason | "detail mismatch: got \"hair\", expected \"scar\"" |
|
| 3 | | parsed | | entry | "4413" | | detail | "hair" | | explanation | "The codex states Silas' hair is grey-streaked auburn, which matches the text. No violation." | | paragraph | 7 | | substring | "grey-streaked auburn hair" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 7]" | | inBounds | true | | expectedText | "his dark brown beard had been freshly trimmed" | | locationAccurate | false |
| | closestExpected | | entry | "4413" | | detail | "beard" | | summary | "Silas's beard matches his grey-streaked auburn hair per codex, but the passage says dark brown beard." |
| | reason | "detail mismatch: got \"hair\", expected \"beard\"" |
|
| 4 | | parsed | | entry | "4412" | | detail | "beard" | | explanation | "The codex states Silas' beard is auburn (\"grey-streaked auburn beard\"), but the text describes it as dark brown." | | paragraph | 7 | | substring | "dark brown beard" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 7]" | | inBounds | true | | expectedText | "the crescent-shaped scar on her right wrist" | | locationAccurate | false |
| | closestExpected | | entry | "4412" | | detail | "scar" | | summary | "Aurora's crescent scar is on her left wrist per codex, but the passage says right wrist." |
| | reason | "detail mismatch: got \"beard\", expected \"scar\"" |
|
| 5 | | parsed | | entry | "4413" | | detail | "beard" | | explanation | "The codex specifies Silas' beard as \"neatly trimmed, matching his grey-streaked auburn hair\", but the text describes it as dark brown." | | paragraph | 7 | | substring | "dark brown beard" |
| | status | "true_positive" | | matchedExpected | | entry | "4413" | | detail | "beard" | | summary | "Silas's beard matches his grey-streaked auburn hair per codex, but the passage says dark brown beard." |
| | location | | extractedText | "[not found in paragraph 7]" | | inBounds | true | | expectedText | "his dark brown beard had been freshly trimmed" | | locationAccurate | false |
|
|
| 6 | | parsed | | entry | "4412" | | detail | "signetRing" | | explanation | "The codex states Silas' signet ring is always worn on his right hand, but the text says it is on his left hand." | | paragraph | 9 | | substring | "The silver signet ring on his left hand" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 9]" | | inBounds | true | | expectedText | "the crescent-shaped scar on her right wrist" | | locationAccurate | false |
| | closestExpected | | entry | "4412" | | detail | "scar" | | summary | "Aurora's crescent scar is on her left wrist per codex, but the passage says right wrist." |
| | reason | "detail mismatch: got \"signetRing\", expected \"scar\"" |
|
| 7 | | parsed | | entry | "4413" | | detail | "signetRing" | | explanation | "The codex states Silas' signet ring is always worn on his right hand, but the text describes it as being on his left hand." | | paragraph | 9 | | substring | "on his left hand" |
| | status | "true_positive" | | matchedExpected | | entry | "4413" | | detail | "signetRing" | | summary | "Silas wears his signet ring on his right hand per codex, but the passage says left hand." |
| | location | | extractedText | "[not found in paragraph 9]" | | inBounds | true | | expectedText | "The silver signet ring on his left hand" | | locationAccurate | false |
|
|
| 8 | | parsed | | entry | "4412" | | detail | "limp" | | explanation | "The codex states Silas has a slight limp in his left leg, but the text says he is favoring his right leg." | | paragraph | 19 | | substring | "favoring his right leg" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 19]" | | inBounds | true | | expectedText | "the crescent-shaped scar on her right wrist" | | locationAccurate | false |
| | closestExpected | | entry | "4412" | | detail | "scar" | | summary | "Aurora's crescent scar is on her left wrist per codex, but the passage says right wrist." |
| | reason | "detail mismatch: got \"limp\", expected \"scar\"" |
|
| 9 | | parsed | | entry | "4413" | | detail | "limp" | | explanation | "The codex states Silas has a slight limp in his left leg, but the text describes him as favoring his right leg." | | paragraph | 19 | | substring | "favoring his right leg" |
| | status | "true_positive" | | matchedExpected | | entry | "4413" | | detail | "limp" | | summary | "Silas limps on his left leg per codex, but the passage says right leg." |
| | location | | extractedText | "[not found in paragraph 19]" | | inBounds | true | | expectedText | "favoring his right leg" | | locationAccurate | false |
|
|
| 10 | | parsed | | entry | "853" | | detail | "ruler" | | explanation | "The codex states Dymas is ruled by Prince Belphegor, not Prince Mammon. The text incorrectly attributes Dymas to Mammon." | | paragraph | 10 | | substring | "Prince Mammon's territory" |
| | status | "true_positive" | | matchedExpected | | entry | "853" | | detail | "ruler" | | summary | "Dymas is Prince Belphegor's realm per codex, but Rory refers to it as Prince Mammon's territory." |
| | location | | extractedText | "[not found in paragraph 10]" | | inBounds | true | | expectedText | "Prince Mammon's territory" | | locationAccurate | false |
|
|
| 11 | | parsed | | entry | "853" | | detail | "skyColor" | | explanation | "The codex states Dymas has a warm amber sky, but the text says the sky had turned grey in Prince Mammon's territory (which doesn't exist in the codex, violating the ruler entry). Since the ruler is incorrect, the sky color description is treated as a violation tied to the ruler contradiction." | | paragraph | 10 | | substring | "The amber sky had turned grey" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 10]" | | inBounds | true | | expectedText | "Prince Mammon's territory" | | locationAccurate | false |
| | closestExpected | | entry | "853" | | detail | "ruler" | | summary | "Dymas is Prince Belphegor's realm per codex, but Rory refers to it as Prince Mammon's territory." |
| | reason | "detail mismatch: got \"skyColor\", expected \"ruler\"" |
|
| 12 | | parsed | | entry | "2001" | | detail | "chainMaterial" | | explanation | "The codex states the Heartstone Pendant has a silver chain, but the text describes it as golden." | | paragraph | 9 | | substring | "golden chain" |
| | status | "true_positive" | | matchedExpected | | entry | "2001" | | detail | "chainMaterial" | | summary | "The Heartstone Pendant has a silver chain per codex, but the passage says golden chain." |
| | location | | extractedText | "[not found in paragraph 9]" | | inBounds | true | | expectedText | "The golden chain pooled around the crimson stone" | | locationAccurate | false |
|
|
| 13 | | parsed | | entry | "2001" | | detail | "gemstoneColor" | | explanation | "The text correctly matches the codex for the gemstone color (crimson). No violation." | | paragraph | 9 | | substring | "crimson stone" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 9]" | | inBounds | true | | expectedText | "The golden chain pooled around the crimson stone" | | locationAccurate | false |
| | closestExpected | | entry | "2001" | | detail | "chainMaterial" | | summary | "The Heartstone Pendant has a silver chain per codex, but the passage says golden chain." |
| | reason | "detail mismatch: got \"gemstoneColor\", expected \"chainMaterial\"" |
|
| 14 | | parsed | | entry | "4412" | | detail | "scar" | | explanation | "The codex states Aurora has a scar on her left wrist, but the text says it is on her right wrist." | | paragraph | 18 | | substring | "crescent-shaped scar on her right wrist" |
| | status | "true_positive" | | matchedExpected | | entry | "4412" | | detail | "scar" | | summary | "Aurora's crescent scar is on her left wrist per codex, but the passage says right wrist." |
| | location | | extractedText | "[not found in paragraph 18]" | | inBounds | true | | expectedText | "the crescent-shaped scar on her right wrist" | | locationAccurate | false |
|
|
| 15 | | parsed | | entry | "4412" | | detail | "backstory" | | explanation | "The codex states Silas owns The Raven's Nest bar (\"He opened 'The Raven's Nest' bar in Soho as a front for his network of contacts\"), which matches the text (\"Inside, the familiar smell... Silas was behind the bar, as always\"). No violation." | | paragraph | 7 | | substring | "Silas' bar" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 7]" | | inBounds | true | | expectedText | "the crescent-shaped scar on her right wrist" | | locationAccurate | false |
| | closestExpected | | entry | "4412" | | detail | "scar" | | summary | "Aurora's crescent scar is on her left wrist per codex, but the passage says right wrist." |
| | reason | "detail mismatch: got \"backstory\", expected \"scar\"" |
|
| 16 | | parsed | | entry | "6001" | | detail | "headquarters" | | explanation | "The text correctly matches the codex for the Wardens' headquarters. No violation." | | paragraph | 14 | | substring | "Westminster Catacombs" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 14]" | | inBounds | true | | expectedText | "Their founding in 1066" | | locationAccurate | false |
| | closestExpected | | entry | "6001" | | detail | "foundingYear" | | summary | "The Wardens were founded in 1215 per codex, but Rory thinks 1066." |
| | reason | "detail mismatch: got \"headquarters\", expected \"foundingYear\"" |
|
| 17 | | parsed | | entry | "7001" | | detail | "solsticeEffect" | | explanation | "No direct contradiction here; the codex states the Veil weakens during the summer solstice, which aligns with the thinning description. No violation." | | paragraph | 19 | | substring | "The Veil is thinning — I can feel it. The summer solstice is three days away" |
| | status | "false_positive" | | location | | extractedText | "[not found in paragraph 19]" | | inBounds | true | | expectedText | "The summer solstice is three days away, and the rift activity is spiking" | | locationAccurate | false |
| | closestExpected | | entry | "7001" | | detail | "solsticeEffect" | | summary | "The Veil weakens during the winter solstice per codex, but the passage says summer solstice." |
| | reason | "paragraph mismatch, reported 19, expected 8" |
|
| 18 | | parsed | | entry | "7001" | | detail | "solsticeEffect" | | explanation | "The codex states the Veil weakens during the summer solstice but does not mention an \"annual collapse.\" The text's phrasing (\"annual collapse at the height of midsummer\") is not covered by the codex, so no violation is flagged." | | paragraph | 21 | | substring | "I know, she knew, the Veil was humming — growing weaker with every hour, preparing for its annual collapse at the height of midsummer" |
| | status | "false_positive" | | location | | extractedText | (null) | | inBounds | false | | expectedText | "The summer solstice is three days away, and the rift activity is spiking" | | locationAccurate | (null) |
| | closestExpected | | entry | "7001" | | detail | "solsticeEffect" | | summary | "The Veil weakens during the winter solstice per codex, but the passage says summer solstice." |
| | reason | "paragraph mismatch, reported 21, expected 8" |
|
| 19 | | parsed | | entry | "6001" | | detail | "identificationMark" | | explanation | "No mention of the Wardens' identification mark in the text. Omission is not a violation." | | paragraph | (null) | | substring | "NA" |
| | status | "false_positive" | | location | | extractedText | (null) | | inBounds | false | | expectedText | "Their founding in 1066" | | locationAccurate | (null) |
| | closestExpected | | entry | "6001" | | detail | "foundingYear" | | summary | "The Wardens were founded in 1215 per codex, but Rory thinks 1066." |
| | reason | "detail mismatch: got \"identificationMark\", expected \"foundingYear\"" |
|