"The Fae Grove is in Richmond Park per codex, but the passage says Hyde Park."
status
"missed"
1
expected
entry
"861"
detail
"standingStones"
summary
"The grove has oak standing stones per codex, but the passage says elm."
status
"missed"
2
expected
entry
"4424"
detail
"eyeColor"
summary
"Isolde has pale lavender eyes per codex, but the passage says pale blue eyes."
status
"matched"
matchedBy
entry
"4424"
detail
"eyeColor"
explanation
"Isolde's eye color is stated as pale lavender in the codex, not pale blue."
paragraph
1
substring
"her pale blue eyes"
location
extractedText
"her pale blue eyes"
inBounds
true
expectedText
"Her pale blue eyes, unblinking"
locationAccurate
true
3
expected
entry
"4424"
detail
"eyeColor"
summary
"Isolde has pale lavender eyes per codex, but the passage again says pale blue eyes in a later paragraph."
status
"missed"
nearMiss
parsed
entry
"4412"
detail
"eyeColor"
explanation
"The text says Aurora has pale blue eyes, but the codex states her eye color is bright blue."
paragraph
1
substring
"her pale blue eyes"
reason
"entry mismatch: got \"4412\", expected \"4424\""
4
expected
entry
"4424"
detail
"footprints"
summary
"Isolde leaves no footprints per codex, but the passage says she leaves clear prints."
status
"missed"
nearMiss
parsed
entry
"4424"
detail
"hair"
explanation
"Isolde's hair is silver and waist-length, but the codex states she is Half-Fae and her hair should be silver reaching her waist — no contradiction for length, but the eye color contradicts."
"Avaros is Prince Mammon's realm per codex, but Tomás says Prince Belphegor's agents operate there."
status
"matched"
matchedBy
entry
"855"
detail
"ruler"
explanation
"Lucien claims Mammon breaks the Covenant daily in Avaros — which matches codex, no conflict."
paragraph
7
substring
"Prince Mammon"
location
extractedText
"[not found in paragraph 7]"
inBounds
true
expectedText
"Prince Belphegor's agents are kidnapping humans"
locationAccurate
false
31
expected
entry
"2006"
detail
"temperature"
summary
"The Fae-Forged Blade is always cold per codex, but the passage again describes it as warm in a later paragraph."
status
"missed"
32
expected
entry
"6002"
detail
"headquarters"
summary
"The Crimson Court's headquarters is in Dymas per codex, but Lucien says their base has shifted to Irath."
status
"missed"
falsePositiveDetails
0
parsed
entry
"4412"
detail
"eyeColor"
explanation
"The text says Aurora has pale blue eyes, but the codex states her eye color is bright blue."
paragraph
1
substring
"her pale blue eyes"
status
"false_positive"
location
extractedText
"her pale blue eyes"
inBounds
true
expectedText
"Her pale blue eyes, unblinking"
locationAccurate
true
closestExpected
entry
"4424"
detail
"eyeColor"
summary
"Isolde has pale lavender eyes per codex, but the passage says pale blue eyes."
reason
"entry mismatch: got \"4412\", expected \"4424\""
1
parsed
entry
"4412"
detail
"hair"
explanation
"The codex states Aurora’s hair is straight shoulder-length black, not waist-length silver."
paragraph
1
substring
"her waist-length silver hair"
status
"false_positive"
location
extractedText
"her waist-length silver hair"
inBounds
true
expectedText
"his natural black hair falling into his face"
locationAccurate
false
closestExpected
entry
"4420"
detail
"hair"
summary
"Kai has dyed electric-blue hair per codex, but the passage says natural black hair."
reason
"entry mismatch: got \"4412\", expected \"4420\""
2
parsed
entry
"4424"
detail
"hair"
explanation
"Isolde's hair is silver and waist-length, but the codex states she is Half-Fae and her hair should be silver reaching her waist — no contradiction for length, but the eye color contradicts."
paragraph
1
substring
"her waist-length silver hair"
status
"false_positive"
location
extractedText
"her waist-length silver hair"
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."
"The codex says the Veil Market moves location every full moon; the text contradicts this by implying a lunar cycle (which may imply monthly, but is inconsistent with full moon phrasing if taken literally in context). The phrasing \"lunar cycle\" is ambiguous but accepted — no violation on movement schedule. Hence, this is not a clear contradiction."
paragraph
10
substring
"The market's moved locations every full moon"
status
"false_positive"
location
extractedText
"[not found in paragraph 10]"
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."
"Silas' bar, The Raven's Nest, has a hidden back room accessible through a bookshelf, which is consistent. No violation."
paragraph
7
substring
"hidden back room accessible through a bookshelf"
status
"false_positive"
location
extractedText
"[not found in paragraph 7]"
inBounds
true
expectedText
""
locationAccurate
false
7
parsed
entry
"7003"
detail
"formation"
explanation
"This is consistent with the codex, which states rift points tend to form near underground water sources — no violation."
paragraph
15
substring
"near underground water sources"
status
"false_positive"
location
extractedText
"[not found in paragraph 15]"
inBounds
true
expectedText
""
locationAccurate
false
8
parsed
entry
"853"
detail
"ruler"
explanation
"The text incorrectly attributes the ruler of Irath as Prince Belphegor; the ruler of Irath is Prince Abaddon according to the codex."
paragraph
7
substring
"Prince Belphegor"
status
"false_positive"
location
extractedText
"[not found in paragraph 7]"
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\""
9
parsed
entry
"859"
detail
"atmosphere"
explanation
"The text is describing Dream Dust, but links it to Somnia's atmosphere, which is stated in the codex as Faintly sweet, narcotic smell. However, Dream Dust (item 2005) is stored in cobalt-blue vials and has no described smell, and is from Somnia — so this atmospheric description is taken from Somnia, and not an error. No violation."
paragraph
3
substring
"faintly sweet, narcotic smell"
status
"false_positive"
location
extractedText
"[not found in paragraph 3]"
inBounds
true
expectedText
""
locationAccurate
false
10
parsed
entry
"2001"
detail
"gemstoneColor"
explanation
"The Heartstone Pendant's gemstone color is deep crimson, which matches \"crimson stone\" — no violation."
paragraph
16
substring
"the crimson stone"
status
"false_positive"
location
extractedText
"[not found in paragraph 16]"
inBounds
true
expectedText
"the golden chain tangled in her fingers"
locationAccurate
false
closestExpected
entry
"2001"
detail
"chainMaterial"
summary
"The Heartstone Pendant has a silver chain per codex, but the passage says golden chain."
"The codex states the Veil weakens during the winter solstice and strengthens during the summer solstice — it does not say it gets thinner continuously or by the hour outside of solstice effects. This is a cosmological inaccuracy. The Veil does not weaken hourly unless it is near the solstice. This is a violation."
paragraph
21
substring
"thin as gossamer, and getting thinner by the hour"
status
"false_positive"
location
extractedText
(null)
inBounds
false
expectedText
""
locationAccurate
(null)
12
parsed
entry
"853"
detail
"name"
explanation
"This aligns with codex entry 853, no conflict."
paragraph
3
substring
"Dymas (Gluttony)"
status
"false_positive"
location
extractedText
"[not found in paragraph 3]"
inBounds
true
expectedText
""
locationAccurate
false
13
parsed
entry
"4413"
detail
"limp"
explanation
"Silas has a slight limp in his *left* leg from an old knee injury — rubbing the knee is not a contradiction, but the knee referenced is correct. No violation."
"The text says Aurora has pale blue eyes, but the codex states her eye color is bright blue."
paragraph
1
substring
"her pale blue eyes"
status
"false_positive"
location
extractedText
"her pale blue eyes"
inBounds
true
expectedText
"Her pale blue eyes, unblinking"
locationAccurate
true
closestExpected
entry
"4424"
detail
"eyeColor"
summary
"Isolde has pale lavender eyes per codex, but the passage says pale blue eyes."
reason
"entry mismatch: got \"4412\", expected \"4424\""
1
parsed
entry
"4424"
detail
"eyeColor"
explanation
"Isolde's eye color is stated as pale lavender in the codex, not pale blue."
paragraph
1
substring
"her pale blue eyes"
status
"true_positive"
matchedExpected
entry
"4424"
detail
"eyeColor"
summary
"Isolde has pale lavender eyes per codex, but the passage says pale blue eyes."
location
extractedText
"her pale blue eyes"
inBounds
true
expectedText
"Her pale blue eyes, unblinking"
locationAccurate
true
2
parsed
entry
"4412"
detail
"hair"
explanation
"The codex states Aurora’s hair is straight shoulder-length black, not waist-length silver."
paragraph
1
substring
"her waist-length silver hair"
status
"false_positive"
location
extractedText
"her waist-length silver hair"
inBounds
true
expectedText
"his natural black hair falling into his face"
locationAccurate
false
closestExpected
entry
"4420"
detail
"hair"
summary
"Kai has dyed electric-blue hair per codex, but the passage says natural black hair."
reason
"entry mismatch: got \"4412\", expected \"4420\""
3
parsed
entry
"4424"
detail
"hair"
explanation
"Isolde's hair is silver and waist-length, but the codex states she is Half-Fae and her hair should be silver reaching her waist — no contradiction for length, but the eye color contradicts."
paragraph
1
substring
"her waist-length silver hair"
status
"false_positive"
location
extractedText
"her waist-length silver hair"
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."
"The Veil Market is said to move to an abandoned station beneath Camden, not Shoreditch."
paragraph
10
substring
"under Shoreditch"
status
"true_positive"
matchedExpected
entry
"856"
detail
"currentLocation"
summary
"The Veil Market is under Camden per codex, but Wei-Lin says Shoreditch."
location
extractedText
"[not found in paragraph 10]"
inBounds
true
expectedText
"abandoned station under Shoreditch"
locationAccurate
false
9
parsed
entry
"856"
detail
"schedule"
explanation
"The codex says the Veil Market moves location every full moon; the text contradicts this by implying a lunar cycle (which may imply monthly, but is inconsistent with full moon phrasing if taken literally in context). The phrasing \"lunar cycle\" is ambiguous but accepted — no violation on movement schedule. Hence, this is not a clear contradiction."
paragraph
10
substring
"The market's moved locations every full moon"
status
"false_positive"
location
extractedText
"[not found in paragraph 10]"
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."
"Somnian Dream Dust is stored in cobalt-blue glass vials, not red, and sealed with black wax, not white."
paragraph
6
substring
"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 6]"
inBounds
true
expectedText
"little red glass vials"
locationAccurate
false
11
parsed
entry
"854"
detail
"secretRoom"
explanation
"Silas' bar, The Raven's Nest, has a hidden back room accessible through a bookshelf, which is consistent. No violation."
paragraph
7
substring
"hidden back room accessible through a bookshelf"
status
"false_positive"
location
extractedText
"[not found in paragraph 7]"
inBounds
true
expectedText
""
locationAccurate
false
12
parsed
entry
"2006"
detail
"material"
explanation
"The Fae-Forged Blade is stated to be made of moonsilver, not bronze."
paragraph
7
substring
"bronze daggers"
status
"true_positive"
matchedExpected
entry
"2006"
detail
"material"
summary
"Fae-Forged Blades are moonsilver per codex, but Wei-Lin says bronze."
location
extractedText
"bronze daggers"
inBounds
true
expectedText
"bronze daggers, they say"
locationAccurate
true
13
parsed
entry
"4418"
detail
"eyeColor"
explanation
"Nyx's eye color is faintly glowing violet according to the codex, not blue."
paragraph
15
substring
"their glowing blue eyes"
status
"true_positive"
matchedExpected
entry
"4418"
detail
"eyeColor"
summary
"Nyx has violet eyes per codex, but the passage says blue."
location
extractedText
"[not found in paragraph 15]"
inBounds
true
expectedText
"their glowing blue eyes"
locationAccurate
false
14
parsed
entry
"7003"
detail
"formation"
explanation
"This is consistent with the codex, which states rift points tend to form near underground water sources — no violation."
paragraph
15
substring
"near underground water sources"
status
"false_positive"
location
extractedText
"[not found in paragraph 15]"
inBounds
true
expectedText
""
locationAccurate
false
15
parsed
entry
"853"
detail
"ruler"
explanation
"The text incorrectly attributes the ruler of Irath as Prince Belphegor; the ruler of Irath is Prince Abaddon according to the codex."
paragraph
7
substring
"Prince Belphegor"
status
"false_positive"
location
extractedText
"[not found in paragraph 7]"
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\""
16
parsed
entry
"859"
detail
"atmosphere"
explanation
"The text is describing Dream Dust, but links it to Somnia's atmosphere, which is stated in the codex as Faintly sweet, narcotic smell. However, Dream Dust (item 2005) is stored in cobalt-blue vials and has no described smell, and is from Somnia — so this atmospheric description is taken from Somnia, and not an error. No violation."
paragraph
3
substring
"faintly sweet, narcotic smell"
status
"false_positive"
location
extractedText
"[not found in paragraph 3]"
inBounds
true
expectedText
""
locationAccurate
false
17
parsed
entry
"2001"
detail
"gemstoneColor"
explanation
"The Heartstone Pendant's gemstone color is deep crimson, which matches \"crimson stone\" — no violation."
paragraph
16
substring
"the crimson stone"
status
"false_positive"
location
extractedText
"[not found in paragraph 16]"
inBounds
true
expectedText
"the golden chain tangled in her fingers"
locationAccurate
false
closestExpected
entry
"2001"
detail
"chainMaterial"
summary
"The Heartstone Pendant has a silver chain per codex, but the passage says golden chain."
"The codex states the Veil weakens during the winter solstice and strengthens during the summer solstice — it does not say it gets thinner continuously or by the hour outside of solstice effects. This is a cosmological inaccuracy. The Veil does not weaken hourly unless it is near the solstice. This is a violation."
paragraph
21
substring
"thin as gossamer, and getting thinner by the hour"
status
"false_positive"
location
extractedText
(null)
inBounds
false
expectedText
""
locationAccurate
(null)
19
parsed
entry
"4417"
detail
"scar"
explanation
"Tomás has a scar running along his *left* forearm, not the right."
paragraph
12
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
"[not found in paragraph 12]"
inBounds
true
expectedText
"His scarred right forearm"
locationAccurate
false
20
parsed
entry
"4417"
detail
"birthplace"
explanation
"Tomás is from Seville, Spain, not Madrid."
paragraph
12
substring
"His Madrid accent"
status
"true_positive"
matchedExpected
entry
"4417"
detail
"birthplace"
summary
"Tomás was born in Seville per codex, but the passage implies Madrid accent."
location
extractedText
"[not found in paragraph 12]"
inBounds
true
expectedText
"His Madrid accent"
locationAccurate
false
21
parsed
entry
"853"
detail
"name"
explanation
"This aligns with codex entry 853, no conflict."
paragraph
3
substring
"Dymas (Gluttony)"
status
"false_positive"
location
extractedText
"[not found in paragraph 3]"
inBounds
true
expectedText
""
locationAccurate
false
22
parsed
entry
"855"
detail
"ruler"
explanation
"Lucien claims Mammon breaks the Covenant daily in Avaros — which matches codex, no conflict."
paragraph
7
substring
"Prince Mammon"
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 7]"
inBounds
true
expectedText
"Prince Belphegor's agents are kidnapping humans"
locationAccurate
false
23
parsed
entry
"4420"
detail
"hair"
explanation
"Kai's hair is dyed electric-blue in an undercut, not natural black."
paragraph
10
substring
"His natural black hair"
status
"true_positive"
matchedExpected
entry
"4420"
detail
"hair"
summary
"Kai has dyed electric-blue hair per codex, but the passage says natural black hair."
location
extractedText
"[not found in paragraph 10]"
inBounds
true
expectedText
"his natural black hair falling into his face"
locationAccurate
false
24
parsed
entry
"4413"
detail
"limp"
explanation
"Silas has a slight limp in his *left* leg from an old knee injury — rubbing the knee is not a contradiction, but the knee referenced is correct. No violation."