"Nyx has violet eyes per codex, but the passage says blue."
status
"matched"
matchedBy
entry
"4418"
detail
"eyeColor"
explanation
"The codex states Nyx's eyes are *faintly glowing violet*; the text does not mention eye color."
paragraph
1
substring
"Nyx materialized from the shadow"
location
extractedText
"[not found in paragraph 1]"
inBounds
true
expectedText
"their glowing blue eyes"
locationAccurate
false
27
expected
entry
"2001"
detail
"chainMaterial"
summary
"The Heartstone Pendant has a silver chain per codex, but the passage says golden chain."
status
"missed"
28
expected
entry
"2001"
detail
"origin"
summary
"The Heartstone Pendant was forged in Dymas per codex, but Isolde says it was forged in Avaros."
status
"missed"
29
expected
entry
"855"
detail
"ruler"
summary
"Avaros is Prince Mammon's realm per codex, but Tomás says Prince Belphegor's agents operate there."
status
"missed"
nearMiss
parsed
entry
"4424"
detail
"ruler"
explanation
"The text incorrectly states Prince Lilith is the ruler of the Somnian Cult; the codex states *Prince Asmodeus* is the ruler of Somnia."
paragraph
1
substring
"Prince Lilith, demands more dreamers"
reason
"entry mismatch: got \"4424\", expected \"855\""
falsePositiveDetails
0
parsed
entry
"4412"
detail
"eyeColor"
explanation
"The text states Aurora has pale blue eyes, but the codex says bright blue."
paragraph
1
substring
"her pale blue eyes, unblinking"
status
"false_positive"
location
extractedText
"her pale blue eyes, unblinking"
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 text describes Aurora's hair as silver, but the codex says straight shoulder-length black."
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
"4412"
detail
"age"
explanation
"Aurora is listed as 25 in the codex; the text incorrectly describes her as a three-hundred-year-old Half-Fae."
paragraph
1
substring
"whatever passed for bones in her three-hundred-year-old Half-Fae body"
status
"false_positive"
location
extractedText
"whatever passed for bones in her three-hundred-year-old Half-Fae body"
inBounds
true
expectedText
""
locationAccurate
true
3
parsed
entry
"4412"
detail
"alias"
explanation
"The text uses \"Rory\" (a non-canon alias for Aurora), but the codex explicitly states \"Aurora\" is the primary name in this context."
paragraph
1
substring
"Rory felt the Heartstone Pendant pulse"
status
"false_positive"
location
extractedText
"[not found in paragraph 1]"
inBounds
true
expectedText
""
locationAccurate
false
4
parsed
entry
"4412"
detail
"item"
explanation
"The codex states the Fae-Forged Blade was given to Aurora by Isolde as a gift (ID 2006), but the text implies it was strapped there *that morning*—not previously held."
paragraph
1
substring
"the Fae-Forged Blade warm at her hip"
status
"false_positive"
location
extractedText
"[not found in paragraph 1]"
inBounds
true
expectedText
""
locationAccurate
false
5
parsed
entry
"4413"
detail
"eyeColor"
explanation
"No mention of Silas's eye color in the text, but the codex states he has hazel eyes."
paragraph
1
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
"Isolde felt in her bones — or whatever passed for bones in her three-hundred-year-old Half-Fae body"
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
"entry mismatch: got \"4413\", expected \"4424\""
6
parsed
entry
"4414"
detail
"hair"
explanation
"The codex says Eva's hair is curly red, but the text describes it escaping from a *wool hat*—no mention of glasses fogging."
paragraph
1
substring
"her curly red hair escaping from under a wool hat"
status
"false_positive"
location
extractedText
"[not found in paragraph 1]"
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."
"Father Cormac is listed as age 55 in the codex; the text incorrectly describes him as having a troubled expression due to his *dark brown eyes* (no age reference)."
paragraph
1
substring
"Father Cormac crossed himself"
status
"false_positive"
location
extractedText
"[not found in paragraph 1]"
inBounds
true
expectedText
""
locationAccurate
false
9
parsed
entry
"4416"
detail
"hair"
explanation
"The codex states Cormac’s hair is *thinning ginger*; the text describes him as having *dark brown eyes* (no hair detail)."
paragraph
1
substring
"thinning ginger hair"
status
"false_positive"
location
extractedText
"[not found in paragraph 1]"
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\""
10
parsed
entry
"4416"
detail
"watch"
explanation
"The codex states Cormac wears a *clerical collar* and has a *rowan-wood rosary*, but the text incorrectly describes him as gripping a *cedar rosary*—no mention of a watch."
paragraph
1
substring
"gripped his cedar rosary beads tightly"
status
"false_positive"
location
extractedText
"[not found in paragraph 1]"
inBounds
true
expectedText
""
locationAccurate
false
11
parsed
entry
"4417"
detail
"age"
explanation
"Tomás is listed as age 29 in the codex; the text does not specify his age."
paragraph
1
substring
"Tomás, who had been quietly checking medical supplies"
status
"false_positive"
location
extractedText
"[not found in paragraph 1]"
inBounds
true
expectedText
"His scarred right forearm"
locationAccurate
false
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\""
12
parsed
entry
"4420"
detail
"headphones"
explanation
"The codex states Kai wears *noise-cancelling headphones* around his neck; the text describes him behind a *laptop screen*—no mention of headphones."
paragraph
1
substring
"behind his laptop screen"
status
"false_positive"
location
extractedText
"[not found in paragraph 1]"
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 incorrectly associates Prince Lilith with Dream Dust; the codex states *Prince Asmodeus* is the ruler of Somnia, where Dream Dust originates."
paragraph
1
substring
"Prince Lilith, demands more dreamers"
status
"false_positive"
location
extractedText
"[not found in paragraph 1]"
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 *The Veil Market* is currently located in an abandoned Tube station beneath **Camden** (ID 856)."
paragraph
1
substring
"The Veil Market is under Shoreditch"
status
"false_positive"
location
extractedText
"[not found in paragraph 1]"
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 \"4425\", expected \"861\""
19
parsed
entry
"4425"
detail
"location"
explanation
"The codex states *The Veil Market* moves every full moon; the text incorrectly states it is fixed for \"this lunar cycle.\""
paragraph
1
substring
"The Veil Market is under Shoreditch"
status
"false_positive"
location
extractedText
"[not found in paragraph 1]"
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 \"4425\", expected \"861\""
20
parsed
entry
"4426"
detail
"item"
explanation
"The codex states *Somnian Dream Dust* is fine silver powder stored in *cobalt-blue glass vials* (ID 2005); the text describes *red glass vials* and *white wax*."
paragraph
1
substring
"Dream Dust through the city — stored in little red glass vials"
status
"false_positive"
location
extractedText
"[not found in paragraph 1]"
inBounds
true
expectedText
""
locationAccurate
false
21
parsed
entry
"4426"
detail
"item"
explanation
"The codex states Dream Dust is harvested from Somnia and induces trances for navigating dreamscapes; the text incorrectly associates it with *binding salts* (a separate item)."
paragraph
1
substring
"Dream Dust through the city — stored in little red glass vials"
status
"false_positive"
location
extractedText
"[not found in paragraph 1]"
inBounds
true
expectedText
""
locationAccurate
false
22
parsed
entry
"4427"
detail
"location"
explanation
"The codex states *The Veil Market* is under Camden, not Shoreditch."
paragraph
1
substring
"The market's moved to an abandoned station under Shoreditch"
status
"false_positive"
location
extractedText
"[not found in paragraph 1]"
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 \"4427\", expected \"861\""
23
parsed
entry
"4428"
detail
"item"
explanation
"The codex states *Fae-Forged Blades* are sliver, leaf-shaped daggers made of *moonsilver* (ID 2006); the text describes *bronze daggers*."
paragraph
1
substring
"bronze daggers, that can cut through wards"
status
"false_positive"
location
extractedText
"[not found in paragraph 1]"
inBounds
true
expectedText
""
locationAccurate
false
24
parsed
entry
"4429"
detail
"location"
explanation
"The codex states *The Veil Market* is under Camden *every full moon*; the text describes it as fixed for \"this lunar cycle.\""
paragraph
1
substring
"The market's under Camden this month"
status
"false_positive"
location
extractedText
"[not found in paragraph 1]"
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 \"4429\", expected \"861\""
25
parsed
entry
"4430"
detail
"group"
explanation
"The codex states *Blackthorn Security* is a private company with headquarters in Canary Wharf; the text incorrectly states their logo (*sword inside a circle*) was flagged on CCTV near *three rift points*—no mention of Blackthorn's operations."
paragraph
1
substring
"Blackthorn Security has been mobilizing"
status
"false_positive"
location
extractedText
"[not found in paragraph 1]"
inBounds
true
expectedText
""
locationAccurate
false
26
parsed
entry
"4431"
detail
"location"
explanation
"The codex does not list Blackfriars as a location with rift activity; the text incorrectly describes a rift beneath Blackfriars."
paragraph
1
substring
"the rift beneath Blackfriars is behaving strangely"
status
"false_positive"
location
extractedText
"[not found in paragraph 1]"
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 \"4431\", expected \"861\""
27
parsed
entry
"4432"
detail
"lore"
explanation
"The codex states the Veil *weakens during the winter solstice* and *strengthens during the summer solstice*; the text incorrectly describes it as thinning *hourly*."
paragraph
1
substring
"the Veil shimmered — thin as gossamer, and getting thinner by the hour"
status
"false_positive"
location
extractedText
"[not found in paragraph 1]"
inBounds
true
expectedText
""
locationAccurate
false
28
parsed
entry
"4433"
detail
"lore"
explanation
"The codex states the Veil appears as a *faint shimmering distortion* visible only to supernatural beings; the text incorrectly describes it as *thin as gossamer*."
paragraph
1
substring
"the Veil shimmered — thin as gossamer"
status
"false_positive"
location
extractedText
"[not found in paragraph 1]"
inBounds
true
expectedText
""
locationAccurate
false
29
parsed
entry
"4434"
detail
"lore"
explanation
"The codex states the Veil's *peak activity* is during the *winter solstice*; the text incorrectly states it is thinning *hourly*."
paragraph
1
substring
"the Veil shimmered"
status
"false_positive"
location
extractedText
"[not found in paragraph 1]"
inBounds
true
expectedText
""
locationAccurate
false
30
parsed
entry
"4435"
detail
"covenant"
explanation
"The codex states the *Covenant of Separation* was signed in **1215** (ID 7002)."
paragraph
1
substring
"the Covenant of Separation — the old treaty from 1066"
status
"false_positive"
location
extractedText
"[not found in paragraph 1]"
inBounds
true
expectedText
""
locationAccurate
false
18.4211%
Precision
True positives: 7/38
totalReported
38
truePositives
7
reportedDetails
0
parsed
entry
"4412"
detail
"eyeColor"
explanation
"The text states Aurora has pale blue eyes, but the codex says bright blue."
paragraph
1
substring
"her pale blue eyes, unblinking"
status
"false_positive"
location
extractedText
"her pale blue eyes, unblinking"
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 text describes Aurora's hair as silver, but the codex says straight shoulder-length black."
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
"4412"
detail
"age"
explanation
"Aurora is listed as 25 in the codex; the text incorrectly describes her as a three-hundred-year-old Half-Fae."
paragraph
1
substring
"whatever passed for bones in her three-hundred-year-old Half-Fae body"
status
"false_positive"
location
extractedText
"whatever passed for bones in her three-hundred-year-old Half-Fae body"
inBounds
true
expectedText
""
locationAccurate
true
3
parsed
entry
"4412"
detail
"alias"
explanation
"The text uses \"Rory\" (a non-canon alias for Aurora), but the codex explicitly states \"Aurora\" is the primary name in this context."
paragraph
1
substring
"Rory felt the Heartstone Pendant pulse"
status
"false_positive"
location
extractedText
"[not found in paragraph 1]"
inBounds
true
expectedText
""
locationAccurate
false
4
parsed
entry
"4412"
detail
"item"
explanation
"The codex states the Fae-Forged Blade was given to Aurora by Isolde as a gift (ID 2006), but the text implies it was strapped there *that morning*—not previously held."
paragraph
1
substring
"the Fae-Forged Blade warm at her hip"
status
"false_positive"
location
extractedText
"[not found in paragraph 1]"
inBounds
true
expectedText
""
locationAccurate
false
5
parsed
entry
"4413"
detail
"eyeColor"
explanation
"No mention of Silas's eye color in the text, but the codex states he has hazel eyes."
paragraph
1
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
"Isolde felt in her bones — or whatever passed for bones in her three-hundred-year-old Half-Fae body"
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
"entry mismatch: got \"4413\", expected \"4424\""
6
parsed
entry
"4414"
detail
"hair"
explanation
"The codex says Eva's hair is curly red, but the text describes it escaping from a *wool hat*—no mention of glasses fogging."
paragraph
1
substring
"her curly red hair escaping from under a wool hat"
status
"false_positive"
location
extractedText
"[not found in paragraph 1]"
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."
"The codex states Lucien has heterochromatic eyes (one amber, one black), but the text describes both as *amber*."
paragraph
1
substring
"Both his amber eyes were fixed on Isolde"
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 1]"
inBounds
true
expectedText
"Both his amber eyes were fixed"
locationAccurate
false
10
parsed
entry
"4416"
detail
"age"
explanation
"Father Cormac is listed as age 55 in the codex; the text incorrectly describes him as having a troubled expression due to his *dark brown eyes* (no age reference)."
paragraph
1
substring
"Father Cormac crossed himself"
status
"false_positive"
location
extractedText
"[not found in paragraph 1]"
inBounds
true
expectedText
""
locationAccurate
false
11
parsed
entry
"4416"
detail
"hair"
explanation
"The codex states Cormac’s hair is *thinning ginger*; the text describes him as having *dark brown eyes* (no hair detail)."
paragraph
1
substring
"thinning ginger hair"
status
"false_positive"
location
extractedText
"[not found in paragraph 1]"
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\""
12
parsed
entry
"4416"
detail
"watch"
explanation
"The codex states Cormac wears a *clerical collar* and has a *rowan-wood rosary*, but the text incorrectly describes him as gripping a *cedar rosary*—no mention of a watch."
paragraph
1
substring
"gripped his cedar rosary beads tightly"
status
"false_positive"
location
extractedText
"[not found in paragraph 1]"
inBounds
true
expectedText
""
locationAccurate
false
13
parsed
entry
"4417"
detail
"age"
explanation
"Tomás is listed as age 29 in the codex; the text does not specify his age."
paragraph
1
substring
"Tomás, who had been quietly checking medical supplies"
status
"false_positive"
location
extractedText
"[not found in paragraph 1]"
inBounds
true
expectedText
"His scarred right forearm"
locationAccurate
false
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\""
14
parsed
entry
"4417"
detail
"scar"
explanation
"The codex states Tomás has a *scar running along his left forearm*; the text describes a scar on his *right forearm*."
paragraph
1
substring
"his scarred right forearm brushed the zipper"
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 1]"
inBounds
true
expectedText
"His scarred right forearm"
locationAccurate
false
15
parsed
entry
"4418"
detail
"eyeColor"
explanation
"The codex states Nyx's eyes are *faintly glowing violet*; the text does not mention eye color."
paragraph
1
substring
"Nyx materialized from the shadow"
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 1]"
inBounds
true
expectedText
"their glowing blue eyes"
locationAccurate
false
16
parsed
entry
"4419"
detail
"eyeColor"
explanation
"The codex states Maggie's eyes are *sharp grey*; the text does not mention eye color."
paragraph
1
substring
"Maggie rapped her oak walking stick"
status
"true_positive"
matchedExpected
entry
"4419"
detail
"eyeColor"
summary
"Maggie has grey eyes per codex, but the passage says green."
location
extractedText
"[not found in paragraph 1]"
inBounds
true
expectedText
"Her keen green eyes"
locationAccurate
false
17
parsed
entry
"4420"
detail
"hair"
explanation
"The codex states Kai’s hair is *dyed electric-blue*; the text describes it as *natural black*."
paragraph
1
substring
"Kai, his natural black hair falling into his face"
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 1]"
inBounds
true
expectedText
"his natural black hair falling into his face"
locationAccurate
false
18
parsed
entry
"4420"
detail
"headphones"
explanation
"The codex states Kai wears *noise-cancelling headphones* around his neck; the text describes him behind a *laptop screen*—no mention of headphones."
paragraph
1
substring
"behind his laptop screen"
status
"false_positive"
location
extractedText
"[not found in paragraph 1]"
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 incorrectly associates Prince Lilith with Dream Dust; the codex states *Prince Asmodeus* is the ruler of Somnia, where Dream Dust originates."
paragraph
1
substring
"Prince Lilith, demands more dreamers"
status
"false_positive"
location
extractedText
"[not found in paragraph 1]"
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 *The Veil Market* is currently located in an abandoned Tube station beneath **Camden** (ID 856)."
paragraph
1
substring
"The Veil Market is under Shoreditch"
status
"false_positive"
location
extractedText
"[not found in paragraph 1]"
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 \"4425\", expected \"861\""
26
parsed
entry
"4425"
detail
"location"
explanation
"The codex states *The Veil Market* moves every full moon; the text incorrectly states it is fixed for \"this lunar cycle.\""
paragraph
1
substring
"The Veil Market is under Shoreditch"
status
"false_positive"
location
extractedText
"[not found in paragraph 1]"
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 \"4425\", expected \"861\""
27
parsed
entry
"4426"
detail
"item"
explanation
"The codex states *Somnian Dream Dust* is fine silver powder stored in *cobalt-blue glass vials* (ID 2005); the text describes *red glass vials* and *white wax*."
paragraph
1
substring
"Dream Dust through the city — stored in little red glass vials"
status
"false_positive"
location
extractedText
"[not found in paragraph 1]"
inBounds
true
expectedText
""
locationAccurate
false
28
parsed
entry
"4426"
detail
"item"
explanation
"The codex states Dream Dust is harvested from Somnia and induces trances for navigating dreamscapes; the text incorrectly associates it with *binding salts* (a separate item)."
paragraph
1
substring
"Dream Dust through the city — stored in little red glass vials"
status
"false_positive"
location
extractedText
"[not found in paragraph 1]"
inBounds
true
expectedText
""
locationAccurate
false
29
parsed
entry
"4427"
detail
"location"
explanation
"The codex states *The Veil Market* is under Camden, not Shoreditch."
paragraph
1
substring
"The market's moved to an abandoned station under Shoreditch"
status
"false_positive"
location
extractedText
"[not found in paragraph 1]"
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 \"4427\", expected \"861\""
30
parsed
entry
"4428"
detail
"item"
explanation
"The codex states *Fae-Forged Blades* are sliver, leaf-shaped daggers made of *moonsilver* (ID 2006); the text describes *bronze daggers*."
paragraph
1
substring
"bronze daggers, that can cut through wards"
status
"false_positive"
location
extractedText
"[not found in paragraph 1]"
inBounds
true
expectedText
""
locationAccurate
false
31
parsed
entry
"4429"
detail
"location"
explanation
"The codex states *The Veil Market* is under Camden *every full moon*; the text describes it as fixed for \"this lunar cycle.\""
paragraph
1
substring
"The market's under Camden this month"
status
"false_positive"
location
extractedText
"[not found in paragraph 1]"
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 \"4429\", expected \"861\""
32
parsed
entry
"4430"
detail
"group"
explanation
"The codex states *Blackthorn Security* is a private company with headquarters in Canary Wharf; the text incorrectly states their logo (*sword inside a circle*) was flagged on CCTV near *three rift points*—no mention of Blackthorn's operations."
paragraph
1
substring
"Blackthorn Security has been mobilizing"
status
"false_positive"
location
extractedText
"[not found in paragraph 1]"
inBounds
true
expectedText
""
locationAccurate
false
33
parsed
entry
"4431"
detail
"location"
explanation
"The codex does not list Blackfriars as a location with rift activity; the text incorrectly describes a rift beneath Blackfriars."
paragraph
1
substring
"the rift beneath Blackfriars is behaving strangely"
status
"false_positive"
location
extractedText
"[not found in paragraph 1]"
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 \"4431\", expected \"861\""
34
parsed
entry
"4432"
detail
"lore"
explanation
"The codex states the Veil *weakens during the winter solstice* and *strengthens during the summer solstice*; the text incorrectly describes it as thinning *hourly*."
paragraph
1
substring
"the Veil shimmered — thin as gossamer, and getting thinner by the hour"
status
"false_positive"
location
extractedText
"[not found in paragraph 1]"
inBounds
true
expectedText
""
locationAccurate
false
35
parsed
entry
"4433"
detail
"lore"
explanation
"The codex states the Veil appears as a *faint shimmering distortion* visible only to supernatural beings; the text incorrectly describes it as *thin as gossamer*."
paragraph
1
substring
"the Veil shimmered — thin as gossamer"
status
"false_positive"
location
extractedText
"[not found in paragraph 1]"
inBounds
true
expectedText
""
locationAccurate
false
36
parsed
entry
"4434"
detail
"lore"
explanation
"The codex states the Veil's *peak activity* is during the *winter solstice*; the text incorrectly states it is thinning *hourly*."
paragraph
1
substring
"the Veil shimmered"
status
"false_positive"
location
extractedText
"[not found in paragraph 1]"
inBounds
true
expectedText
""
locationAccurate
false
37
parsed
entry
"4435"
detail
"covenant"
explanation
"The codex states the *Covenant of Separation* was signed in **1215** (ID 7002)."
paragraph
1
substring
"the Covenant of Separation — the old treaty from 1066"