"The codex states Father Cormac has *thinning ginger* hair, but the contradiction is that the text describes it as \"dark brown eyes\" (already flagged) and \"ginger hair\" is correct, but the *complexion* is described as ruddy, which is not contradicted here. No violation for hair itself."
paragraph
10
substring
"his thinning ginger hair"
status
"false_positive"
location
extractedText
"[not found in paragraph 10]"
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."
"The codex states Lucien wears *charcoal suits* (correct), but the contradiction is that the text describes him as \"leaning on his cane\" (correct) but the *hair color* is already flagged."
paragraph
12
substring
"tailored charcoal suit"
status
"false_positive"
location
extractedText
"[not found in paragraph 12]"
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."
"The codex states Aurora's aliases include *Rory*, which is used correctly here. No violation."
paragraph
23
substring
"Rory said"
status
"false_positive"
location
extractedText
(null)
inBounds
false
expectedText
""
locationAccurate
(null)
9
parsed
entry
"4413"
detail
"limp"
explanation
"The codex states Silas has a *slight limp in his left leg*, but the text does not mention it. No contradiction."
paragraph
24
substring
"Silas, who had been standing silently at the edge of the grove"
status
"false_positive"
location
extractedText
(null)
inBounds
false
expectedText
""
locationAccurate
(null)
10
parsed
entry
"4413"
detail
"eyeColor"
explanation
"The codex states Silas has *hazel* eyes, which matches the text. No violation."
paragraph
24
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\""
11
parsed
entry
"4413"
detail
"limp"
explanation
"The codex states Silas has a *slight limp in his left leg*, which matches the text's description of rubbing his left knee. No violation."
paragraph
24
substring
"He rubbed his left knee"
status
"false_positive"
location
extractedText
(null)
inBounds
false
expectedText
""
locationAccurate
(null)
12
parsed
entry
"4413"
detail
"backstory"
explanation
"The codex states Silas retired after a botched operation in *Prague* (correct), but the year is *1987* in the text, not specified in the codex. No violation."
paragraph
24
substring
"I've seen this before. Prague, 1987"1/1/1987, 12:00:00 AM
status
"false_positive"
location
extractedText
(null)
inBounds
false
expectedText
""
locationAccurate
(null)
13
parsed
entry
"856"
detail
"currentLocation"
explanation
"The codex states The Veil Market is currently under *Camden* (correct), but the text says \"under Shoreditch\" earlier, which is incorrect. The later correction is accurate."
paragraph
16
substring
"Camden"
status
"false_positive"
location
extractedText
"[not found in paragraph 16]"
inBounds
true
expectedText
""
locationAccurate
false
14
parsed
entry
"6006"
detail
"headquarters"
explanation
"The codex states Blackthorn Security's headquarters is in *Canary Wharf* (correct). No violation."
paragraph
16
substring
"Canary Wharf"
status
"false_positive"
location
extractedText
"[not found in paragraph 16]"
inBounds
true
expectedText
"the sword inside a circle"
locationAccurate
false
closestExpected
entry
"6006"
detail
"logo"
summary
"Blackthorn Security's logo is a thorned branch inside a shield per codex, but Kai says a sword inside a circle."
"The codex states Eva wears *round* glasses, not square."
paragraph
3
substring
"her square glasses kept fogging"
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 3]"
inBounds
true
expectedText
"Her square glasses kept fogging"
locationAccurate
false
3
parsed
entry
"4422"
detail
"eyeColor"
explanation
"The codex states Father Cormac has *pale blue* eyes, not dark brown."
paragraph
10
substring
"his dark brown eyes"
status
"true_positive"
matchedExpected
entry
"4422"
detail
"eyeColor"
summary
"Father Cormac has pale blue eyes per codex, but the passage says dark brown eyes."
location
extractedText
"[not found in paragraph 10]"
inBounds
true
expectedText
"his dark brown eyes troubled"
locationAccurate
false
4
parsed
entry
"4422"
detail
"hair"
explanation
"The codex states Father Cormac has *thinning ginger* hair, but the contradiction is that the text describes it as \"dark brown eyes\" (already flagged) and \"ginger hair\" is correct, but the *complexion* is described as ruddy, which is not contradicted here. No violation for hair itself."
paragraph
10
substring
"his thinning ginger hair"
status
"false_positive"
location
extractedText
"[not found in paragraph 10]"
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."
"The codex states Lucien's cane is *ivory-handled*, not mahogany."
paragraph
12
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 12]"
inBounds
true
expectedText
"leaning on his mahogany cane"
locationAccurate
false
8
parsed
entry
"4415"
detail
"eyeColor"
explanation
"The codex states Lucien has *heterochromatic* eyes (one amber, one black), not both amber."
paragraph
12
substring
"Both his amber eyes were fixed"
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 12]"
inBounds
true
expectedText
"Both his amber eyes were fixed"
locationAccurate
false
9
parsed
entry
"4415"
detail
"dress"
explanation
"The codex states Lucien wears *charcoal suits* (correct), but the contradiction is that the text describes him as \"leaning on his cane\" (correct) but the *hair color* is already flagged."
paragraph
12
substring
"tailored charcoal suit"
status
"false_positive"
location
extractedText
"[not found in paragraph 12]"
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."
"The codex states the pendant's chain is *silver*, not golden."
paragraph
22
substring
"the 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
(null)
inBounds
false
expectedText
"the golden chain tangled in her fingers"
locationAccurate
(null)
21
parsed
entry
"4412"
detail
"aliases"
explanation
"The codex states Aurora's aliases include *Rory*, which is used correctly here. No violation."
paragraph
23
substring
"Rory said"
status
"false_positive"
location
extractedText
(null)
inBounds
false
expectedText
""
locationAccurate
(null)
22
parsed
entry
"4413"
detail
"limp"
explanation
"The codex states Silas has a *slight limp in his left leg*, but the text does not mention it. No contradiction."
paragraph
24
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
"eyeColor"
explanation
"The codex states Silas has *hazel* eyes, which matches the text. No violation."
paragraph
24
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\""
24
parsed
entry
"4413"
detail
"limp"
explanation
"The codex states Silas has a *slight limp in his left leg*, which matches the text's description of rubbing his left knee. No violation."
paragraph
24
substring
"He rubbed his left knee"
status
"false_positive"
location
extractedText
(null)
inBounds
false
expectedText
""
locationAccurate
(null)
25
parsed
entry
"4413"
detail
"backstory"
explanation
"The codex states Silas retired after a botched operation in *Prague* (correct), but the year is *1987* in the text, not specified in the codex. No violation."
paragraph
24
substring
"I've seen this before. Prague, 1987"1/1/1987, 12:00:00 AM
status
"false_positive"
location
extractedText
(null)
inBounds
false
expectedText
""
locationAccurate
(null)
26
parsed
entry
"7002"
detail
"signedYear"
explanation
"The codex states the Covenant of Separation was signed in *1215*, not 1066."
paragraph
10
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 10]"
inBounds
true
expectedText
"the old treaty from 1066"
locationAccurate
false
27
parsed
entry
"856"
detail
"currentLocation"
explanation
"The codex states The Veil Market is currently under *Camden*, not Shoreditch."
paragraph
16
substring
"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
28
parsed
entry
"856"
detail
"currentLocation"
explanation
"The codex states The Veil Market is currently under *Camden* (correct), but the text says \"under Shoreditch\" earlier, which is incorrect. The later correction is accurate."
paragraph
16
substring
"Camden"
status
"false_positive"
location
extractedText
"[not found in paragraph 16]"
inBounds
true
expectedText
""
locationAccurate
false
29
parsed
entry
"6006"
detail
"logo"
explanation
"The codex states Blackthorn Security's logo is a *thorned branch inside a shield*, not a sword inside a circle."
paragraph
16
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 16]"
inBounds
true
expectedText
"the sword inside a circle"
locationAccurate
false
30
parsed
entry
"6006"
detail
"headquarters"
explanation
"The codex states Blackthorn Security's headquarters is in *Canary Wharf* (correct). No violation."
paragraph
16
substring
"Canary Wharf"
status
"false_positive"
location
extractedText
"[not found in paragraph 16]"
inBounds
true
expectedText
"the sword inside a circle"
locationAccurate
false
closestExpected
entry
"6006"
detail
"logo"
summary
"Blackthorn Security's logo is a thorned branch inside a shield per codex, but Kai says a sword inside a circle."