"Isolde leaves no footprints per codex, but the passage says she leaves clear prints."
status
"matched"
matchedBy
entry
"4424"
detail
"footprints"
explanation
"The text states Isolde leaves no footprints, which matches the codex's \"leaves no footprints when she walks\" description."
paragraph
8
substring
"leaves no footprints"
location
extractedText
"[not found in paragraph 8]"
inBounds
true
expectedText
"her bare feet leaving clear prints in the soft earth"
locationAccurate
false
5
expected
entry
"2006"
detail
"temperature"
summary
"The Fae-Forged Blade is always cold per codex, but the passage says warm."
status
"missed"
6
expected
entry
"4414"
detail
"glasses"
summary
"Eva wears round glasses per codex, but the passage says square glasses."
status
"missed"
7
expected
entry
"2005"
detail
"containerColor"
summary
"Dream Dust is stored in cobalt-blue vials per codex, but Isolde says red glass vials."
status
"matched"
matchedBy
entry
"2005"
detail
"color"
explanation
"The text states the Dream Dust is \"fine silver powder,\" which matches the codex's \"color\" entry."
paragraph
10
substring
"fine silver powder"
location
extractedText
"[not found in paragraph 10]"
inBounds
true
expectedText
"little red glass vials"
locationAccurate
false
8
expected
entry
"2005"
detail
"sealMaterial"
summary
"Dream Dust vials are sealed with black wax per codex, but Isolde says white wax."
status
"missed"
nearMiss
parsed
entry
"2003"
detail
"material"
explanation
"The text describes the Gauntlet's material as \"blackened iron with glowing red runes,\" which matches the codex's \"material\" entry."
paragraph
10
substring
"blackened iron with glowing red runes"
reason
"entry mismatch: got \"2003\", expected \"2005\""
9
expected
entry
"6003"
detail
"master"
summary
"The Somnian Cult serves Prince Asmodeus per codex, but Isolde says Prince Lilith."
status
"matched"
matchedBy
entry
"6003"
detail
"master"
explanation
"The text states the Somnian Cult is led by Prince Asmodeus, which matches the codex's \"master\" entry."
paragraph
13
substring
"Prince Asmodeus"
location
extractedText
"[not found in paragraph 13]"
inBounds
true
expectedText
"Prince Lilith, demands more dreamers"
locationAccurate
false
10
expected
entry
"4422"
detail
"eyeColor"
summary
"Father Cormac has pale blue eyes per codex, but the passage says dark brown eyes."
status
"missed"
11
expected
entry
"4422"
detail
"rosary"
summary
"Cormac carries a rowan wood rosary per codex, but the passage says cedar."
status
"matched"
matchedBy
entry
"4422"
detail
"rosary"
explanation
"The text describes Father Cormac's rosary as \"rowan wood beads,\" but the codex states it is \"rosary made of rowan wood beads\" — this matches the codex."
paragraph
6
substring
"rowan wood beads"
location
extractedText
"[not found in paragraph 6]"
inBounds
true
expectedText
"his cedar rosary beads"
locationAccurate
false
12
expected
entry
"7002"
detail
"signedYear"
summary
"The Covenant of Separation was signed in 1215 per codex, but Cormac says 1066."
status
"matched"
matchedBy
entry
"7002"
detail
"signedYear"
explanation
"The text states the Covenant was signed in 1215, which matches the codex's \"signedYear\" entry."
paragraph
12
substring
"1215"
location
extractedText
"[not found in paragraph 12]"
inBounds
true
expectedText
"the old treaty from 1066"
locationAccurate
false
13
expected
entry
"6004"
detail
"headquarters"
summary
"The Parish Guard HQ is St. Brigid's in Islington per codex, but Cormac says Southwark."
status
"missed"
nearMiss
parsed
entry
"6004"
detail
"identification"
explanation
"The text describes the Parish Guard's identification as \"rowan-wood rosaries,\" which matches the codex's \"identification\" entry."
"Lucien carries an ivory-handled cane per codex, but the passage says mahogany."
status
"missed"
15
expected
entry
"4415"
detail
"eyeColor"
summary
"Lucien has heterochromatic eyes (one amber, one black), but the passage says both amber."
status
"missed"
16
expected
entry
"4421"
detail
"tattoo"
summary
"Yasmin's flame serpent tattoo is on her left arm per codex, but the passage says right arm."
status
"matched"
matchedBy
entry
"4421"
detail
"tattoo"
explanation
"The text describes Yasmin's tattoo as a \"flame serpent tattoo,\" but the codex states she has a \"flame serpent tattoo coiling up her left arm\" — this matches the codex."
paragraph
5
substring
"flame serpent tattoo"
location
extractedText
"[not found in paragraph 5]"
inBounds
true
expectedText
"tattoo on her right arm"
locationAccurate
false
17
expected
entry
"4423"
detail
"tattoo"
summary
"Wei-Lin's dragon tattoo covers his back per codex, but the passage says chest."
status
"missed"
nearMiss
parsed
entry
"4420"
detail
"wristTattoo"
explanation
"The text describes Kai's tattoo as a \"circuit board tattoo,\" but the codex states he has a \"small circuit board tattoo on the inside of his right wrist\" — this matches the codex."
paragraph
4
substring
"circuit board tattoo"
reason
"entry mismatch: got \"4420\", expected \"4423\""
18
expected
entry
"2006"
detail
"material"
summary
"Fae-Forged Blades are moonsilver per codex, but Wei-Lin says bronze."
status
"matched"
matchedBy
entry
"2006"
detail
"material"
explanation
"The text states the Fae-Forged Blade is made of \"moonsilver,\" which matches the codex's \"material\" entry."
paragraph
11
substring
"moonsilver"
location
extractedText
"[not found in paragraph 11]"
inBounds
true
expectedText
"bronze daggers, they say"
locationAccurate
false
19
expected
entry
"856"
detail
"currentLocation"
summary
"The Veil Market is under Camden per codex, but Wei-Lin says Shoreditch."
status
"missed"
20
expected
entry
"4420"
detail
"hair"
summary
"Kai has dyed electric-blue hair per codex, but the passage says natural black hair."
status
"missed"
nearMiss
parsed
entry
"4420"
detail
"headphones"
explanation
"The text describes Kai's headphones as \"noise-cancelling,\" but the codex states he wears \"noise-cancelling headphones\" — this is a direct match, so no violation. (Note: The codex entry for Kai (id 4420) lists \"headphones\" as \"noise-cancelling headphones,\" which matches the text. This is not a violation.)"
"Blackthorn Security's logo is a thorned branch inside a shield per codex, but Kai says a sword inside a circle."
status
"matched"
matchedBy
entry
"6006"
detail
"logo"
explanation
"The text describes Blackthorn Security's logo as \"thorned branch inside a shield,\" which matches the codex's \"logo\" entry."
paragraph
13
substring
"thorned branch inside a shield"
location
extractedText
"[not found in paragraph 13]"
inBounds
true
expectedText
"the sword inside a circle"
locationAccurate
false
22
expected
entry
"4419"
detail
"walkingStick"
summary
"Maggie carries a blackthorn stick per codex, but the passage says oak."
status
"missed"
23
expected
entry
"4419"
detail
"eyeColor"
summary
"Maggie has grey eyes per codex, but the passage says green."
status
"missed"
24
expected
entry
"6001"
detail
"foundingYear"
summary
"The Wardens were founded in 1215 per codex, but Maggie says 1066."
status
"missed"
nearMiss
parsed
entry
"6001"
detail
"identificationMark"
explanation
"The text describes the Wardens' identification mark as \"small iron pin in the shape of a closed eye,\" which matches the codex's \"identificationMark\" entry."
"Tomás has a scar on his left forearm per codex, but the passage says right forearm."
status
"missed"
26
expected
entry
"4417"
detail
"birthplace"
summary
"Tomás was born in Seville per codex, but the passage implies Madrid accent."
status
"missed"
nearMiss
parsed
entry
"4423"
detail
"birthplace"
explanation
"The text states Tomás was born in Seville, Spain, which matches the codex."
paragraph
7
substring
"Seville, Spain"
reason
"entry mismatch: got \"4423\", expected \"4417\""
27
expected
entry
"4418"
detail
"eyeColor"
summary
"Nyx has violet eyes per codex, but the passage says blue."
status
"missed"
nearMiss
parsed
entry
"4418"
detail
"form"
explanation
"The text describes Isolde as having a \"Half-Fae body,\" but the codex states she is a Shade (a being of living shadow) who lost her physical body permanently."
"The text describes Isolde as having a \"Half-Fae body,\" but the codex states she is a Shade (a being of living shadow) who lost her physical body permanently."
paragraph
3
substring
"standing stones"
status
"false_positive"
location
extractedText
"[not found in paragraph 3]"
inBounds
true
expectedText
"their glowing blue eyes"
locationAccurate
false
closestExpected
entry
"4418"
detail
"eyeColor"
summary
"Nyx has violet eyes per codex, but the passage says blue."
"The text describes Kai's headphones as \"noise-cancelling,\" but the codex states he wears \"noise-cancelling headphones\" — this is a direct match, so no violation. (Note: The codex entry for Kai (id 4420) lists \"headphones\" as \"noise-cancelling headphones,\" which matches the text. This is not a violation.)"
paragraph
4
substring
"noise-cancelling headphones"
status
"false_positive"
location
extractedText
"[not found in paragraph 4]"
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."
"The text describes Kai's tattoo as a \"circuit board tattoo,\" but the codex states he has a \"small circuit board tattoo on the inside of his right wrist\" — this matches the codex."
paragraph
4
substring
"circuit board tattoo"
status
"false_positive"
location
extractedText
"[not found in paragraph 4]"
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."
"The text describes Tomás's scar as \"scar running along his left forearm,\" but the codex states he has a \"missing the tip of his left little finger\" — this is a different detail. However, the text does not mention the missing finger, so no contradiction. (Note: The text does not mention the missing finger, so no violation.)"
paragraph
7
substring
"missing the tip of his left little finger"
status
"false_positive"
location
extractedText
"[not found in paragraph 7]"
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."
"The text describes the Ledger's pages as \"thin beaten copper,\" which matches the codex's \"pageMaterial\" entry."
paragraph
9
substring
"thin beaten copper"
status
"false_positive"
location
extractedText
"[not found in paragraph 9]"
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 \"2002\", expected \"2006\""
9
parsed
entry
"2002"
detail
"inkColor"
explanation
"The text states the ink is \"dark red,\" which matches the codex's \"inkColor\" entry."
paragraph
9
substring
"dark red ink"
status
"false_positive"
location
extractedText
"[not found in paragraph 9]"
inBounds
true
expectedText
""
locationAccurate
false
10
parsed
entry
"2003"
detail
"material"
explanation
"The text describes the Gauntlet's material as \"blackened iron with glowing red runes,\" which matches the codex's \"material\" entry."
paragraph
10
substring
"blackened iron with glowing red runes"
status
"false_positive"
location
extractedText
"[not found in paragraph 10]"
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\""
11
parsed
entry
"2004"
detail
"casingMaterial"
explanation
"The text describes the Compass's casing as \"small brass compass,\" which matches the codex's \"casingMaterial\" entry."
paragraph
10
substring
"small brass compass"
status
"false_positive"
location
extractedText
"[not found in paragraph 10]"
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\""
12
parsed
entry
"7001"
detail
"solsticeEffect"
explanation
"The text states the Veil weakens during the winter solstice, which matches the codex's \"solsticeEffect\" entry."
paragraph
12
substring
"weakens during the winter solstice"
status
"false_positive"
location
extractedText
"[not found in paragraph 12]"
inBounds
true
expectedText
""
locationAccurate
false
13
parsed
entry
"7001"
detail
"appearance"
explanation
"The text describes the Veil as a \"faint shimmering distortion,\" which matches the codex's \"appearance\" entry."
paragraph
12
substring
"faint shimmering distortion"
status
"false_positive"
location
extractedText
"[not found in paragraph 12]"
inBounds
true
expectedText
""
locationAccurate
false
14
parsed
entry
"7003"
detail
"peakActivity"
explanation
"The text states the rifts are most active during the winter solstice, which matches the codex's \"peakActivity\" entry."
paragraph
12
substring
"most active during the winter solstice"
status
"false_positive"
location
extractedText
"[not found in paragraph 12]"
inBounds
true
expectedText
""
locationAccurate
false
15
parsed
entry
"7004"
detail
"sealingMethod"
explanation
"The text states Helbound souls are sealed by blood and recorded in the Prince's domain, which matches the codex's \"sealingMethod\" entry."
paragraph
12
substring
"sealed by blood and recorded in that Prince's domain"
status
"false_positive"
location
extractedText
"[not found in paragraph 12]"
inBounds
true
expectedText
""
locationAccurate
false
16
parsed
entry
"7005"
detail
"physicalLoss"
explanation
"The text states Shade transformation strips the subject of their physical body permanently, which matches the codex's \"physicalLoss\" entry."
paragraph
12
substring
"strips the subject of their physical body permanently"
status
"false_positive"
location
extractedText
"[not found in paragraph 12]"
inBounds
true
expectedText
""
locationAccurate
false
17
parsed
entry
"6001"
detail
"identificationMark"
explanation
"The text describes the Wardens' identification mark as \"small iron pin in the shape of a closed eye,\" which matches the codex's \"identificationMark\" entry."
paragraph
13
substring
"small iron pin in the shape of a closed eye"
status
"false_positive"
location
extractedText
"[not found in paragraph 13]"
inBounds
true
expectedText
"The Wardens were founded in 1066"
locationAccurate
false
closestExpected
entry
"6001"
detail
"foundingYear"
summary
"The Wardens were founded in 1215 per codex, but Maggie says 1066."
"The text describes Isolde as having a \"Half-Fae body,\" but the codex states she is a Shade (a being of living shadow) who lost her physical body permanently."
paragraph
3
substring
"standing stones"
status
"false_positive"
location
extractedText
"[not found in paragraph 3]"
inBounds
true
expectedText
"their glowing blue eyes"
locationAccurate
false
closestExpected
entry
"4418"
detail
"eyeColor"
summary
"Nyx has violet eyes per codex, but the passage says blue."
"The text describes Kai's headphones as \"noise-cancelling,\" but the codex states he wears \"noise-cancelling headphones\" — this is a direct match, so no violation. (Note: The codex entry for Kai (id 4420) lists \"headphones\" as \"noise-cancelling headphones,\" which matches the text. This is not a violation.)"
paragraph
4
substring
"noise-cancelling headphones"
status
"false_positive"
location
extractedText
"[not found in paragraph 4]"
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."
"The text describes Kai's tattoo as a \"circuit board tattoo,\" but the codex states he has a \"small circuit board tattoo on the inside of his right wrist\" — this matches the codex."
paragraph
4
substring
"circuit board tattoo"
status
"false_positive"
location
extractedText
"[not found in paragraph 4]"
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."
"The text describes Yasmin's tattoo as a \"flame serpent tattoo,\" but the codex states she has a \"flame serpent tattoo coiling up her left arm\" — this matches the codex."
paragraph
5
substring
"flame serpent tattoo"
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 5]"
inBounds
true
expectedText
"tattoo on her right arm"
locationAccurate
false
5
parsed
entry
"4422"
detail
"rosary"
explanation
"The text describes Father Cormac's rosary as \"rowan wood beads,\" but the codex states it is \"rosary made of rowan wood beads\" — this matches the codex."
paragraph
6
substring
"rowan wood 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 6]"
inBounds
true
expectedText
"his cedar rosary beads"
locationAccurate
false
6
parsed
entry
"4423"
detail
"missingFinger"
explanation
"The text describes Tomás's scar as \"scar running along his left forearm,\" but the codex states he has a \"missing the tip of his left little finger\" — this is a different detail. However, the text does not mention the missing finger, so no contradiction. (Note: The text does not mention the missing finger, so no violation.)"
paragraph
7
substring
"missing the tip of his left little finger"
status
"false_positive"
location
extractedText
"[not found in paragraph 7]"
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."
"The text states Isolde leaves no footprints, which matches the codex's \"leaves no footprints when she walks\" description."
paragraph
8
substring
"leaves no footprints"
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
"[not found in paragraph 8]"
inBounds
true
expectedText
"her bare feet leaving clear prints in the soft earth"
locationAccurate
false
11
parsed
entry
"2002"
detail
"pageMaterial"
explanation
"The text describes the Ledger's pages as \"thin beaten copper,\" which matches the codex's \"pageMaterial\" entry."
paragraph
9
substring
"thin beaten copper"
status
"false_positive"
location
extractedText
"[not found in paragraph 9]"
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 \"2002\", expected \"2006\""
12
parsed
entry
"2002"
detail
"inkColor"
explanation
"The text states the ink is \"dark red,\" which matches the codex's \"inkColor\" entry."
paragraph
9
substring
"dark red ink"
status
"false_positive"
location
extractedText
"[not found in paragraph 9]"
inBounds
true
expectedText
""
locationAccurate
false
13
parsed
entry
"2003"
detail
"material"
explanation
"The text describes the Gauntlet's material as \"blackened iron with glowing red runes,\" which matches the codex's \"material\" entry."
paragraph
10
substring
"blackened iron with glowing red runes"
status
"false_positive"
location
extractedText
"[not found in paragraph 10]"
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\""
14
parsed
entry
"2004"
detail
"casingMaterial"
explanation
"The text describes the Compass's casing as \"small brass compass,\" which matches the codex's \"casingMaterial\" entry."
paragraph
10
substring
"small brass compass"
status
"false_positive"
location
extractedText
"[not found in paragraph 10]"
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\""
15
parsed
entry
"2005"
detail
"color"
explanation
"The text states the Dream Dust is \"fine silver powder,\" which matches the codex's \"color\" entry."
paragraph
10
substring
"fine silver powder"
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
16
parsed
entry
"2006"
detail
"material"
explanation
"The text states the Fae-Forged Blade is made of \"moonsilver,\" which matches the codex's \"material\" entry."
paragraph
11
substring
"moonsilver"
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 11]"
inBounds
true
expectedText
"bronze daggers, they say"
locationAccurate
false
17
parsed
entry
"7001"
detail
"solsticeEffect"
explanation
"The text states the Veil weakens during the winter solstice, which matches the codex's \"solsticeEffect\" entry."
paragraph
12
substring
"weakens during the winter solstice"
status
"false_positive"
location
extractedText
"[not found in paragraph 12]"
inBounds
true
expectedText
""
locationAccurate
false
18
parsed
entry
"7001"
detail
"appearance"
explanation
"The text describes the Veil as a \"faint shimmering distortion,\" which matches the codex's \"appearance\" entry."
paragraph
12
substring
"faint shimmering distortion"
status
"false_positive"
location
extractedText
"[not found in paragraph 12]"
inBounds
true
expectedText
""
locationAccurate
false
19
parsed
entry
"7002"
detail
"signedYear"
explanation
"The text states the Covenant was signed in 1215, which matches the codex's \"signedYear\" entry."
paragraph
12
substring
"1215"
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 12]"
inBounds
true
expectedText
"the old treaty from 1066"
locationAccurate
false
20
parsed
entry
"7003"
detail
"peakActivity"
explanation
"The text states the rifts are most active during the winter solstice, which matches the codex's \"peakActivity\" entry."
paragraph
12
substring
"most active during the winter solstice"
status
"false_positive"
location
extractedText
"[not found in paragraph 12]"
inBounds
true
expectedText
""
locationAccurate
false
21
parsed
entry
"7004"
detail
"sealingMethod"
explanation
"The text states Helbound souls are sealed by blood and recorded in the Prince's domain, which matches the codex's \"sealingMethod\" entry."
paragraph
12
substring
"sealed by blood and recorded in that Prince's domain"
status
"false_positive"
location
extractedText
"[not found in paragraph 12]"
inBounds
true
expectedText
""
locationAccurate
false
22
parsed
entry
"7005"
detail
"physicalLoss"
explanation
"The text states Shade transformation strips the subject of their physical body permanently, which matches the codex's \"physicalLoss\" entry."
paragraph
12
substring
"strips the subject of their physical body permanently"
status
"false_positive"
location
extractedText
"[not found in paragraph 12]"
inBounds
true
expectedText
""
locationAccurate
false
23
parsed
entry
"6001"
detail
"identificationMark"
explanation
"The text describes the Wardens' identification mark as \"small iron pin in the shape of a closed eye,\" which matches the codex's \"identificationMark\" entry."
paragraph
13
substring
"small iron pin in the shape of a closed eye"
status
"false_positive"
location
extractedText
"[not found in paragraph 13]"
inBounds
true
expectedText
"The Wardens were founded in 1066"
locationAccurate
false
closestExpected
entry
"6001"
detail
"foundingYear"
summary
"The Wardens were founded in 1215 per codex, but Maggie says 1066."