{
  "id": "glass-harbor",
  "title": "The Glass Harbor Field Manual of Lumen Bay",
  "version": "1.0.0",
  "sections": [
    {
      "id": "ch-01",
      "ordinal": 1,
      "kind": "chapter",
      "title": "The Cartographer of Lumen Bay",
      "filename": "ch-01.md",
      "sha256": "6ede72ee510eb68c876f1696f9c6bcad08add3685180d74026a9d0c6c79c0691",
      "status": "current"
    },
    {
      "id": "ch-02",
      "ordinal": 2,
      "kind": "chapter",
      "title": "Working the North Beacon",
      "filename": "ch-02.md",
      "sha256": "3972bd07c6cdd2c61070f849a480a6e26d82b43898602bc64119b2db65501c72",
      "status": "current"
    },
    {
      "id": "ch-03",
      "ordinal": 3,
      "kind": "chapter",
      "title": "The Maintenance Log",
      "filename": "ch-03.md",
      "sha256": "fcd6e451f523dbbd94183b7ecfaf3f76c707cb8b60f3b14252d84f9dae0c2794",
      "status": "current"
    },
    {
      "id": "ch-04",
      "ordinal": 4,
      "kind": "chapter",
      "title": "Convoy Kestrel",
      "filename": "ch-04.md",
      "sha256": "7f46611e272c5546135164edd33a057b8cdd183dc7441ff0b92b2e8caead0bdf",
      "status": "current"
    },
    {
      "id": "ch-05",
      "ordinal": 5,
      "kind": "chapter",
      "title": "The River-Lantern Ceremony",
      "filename": "ch-05.md",
      "sha256": "db1c8e415971720f4497e13b10ed3a36888fa0427f73803fded9b8125fe3c59e",
      "status": "current"
    },
    {
      "id": "ch-06",
      "ordinal": 6,
      "kind": "chapter",
      "title": "The Sealed Archive",
      "filename": "ch-06.md",
      "sha256": "18df5555403b8d1a325bb5cb7c856e7d69201b73860bd6abb9c91663b6792613",
      "status": "current"
    },
    {
      "id": "ch-07",
      "ordinal": 7,
      "kind": "chapter",
      "title": "Why Mara Distrusts the Amber Instruction",
      "filename": "ch-07.md",
      "sha256": "ff9bb0b5bc55ab12ef14844db4efb0cebd4117ef8ed9aae972ef737f03661828",
      "status": "current"
    },
    {
      "id": "ch-08",
      "ordinal": 8,
      "kind": "chapter",
      "title": "Whose Manual This Is",
      "filename": "ch-08.md",
      "sha256": "2e47a913ec95da9c29a83d8bae5f58ab1dd518a25dfbe807cb81df699b82c87a",
      "status": "current"
    },
    {
      "id": "appendix-a",
      "ordinal": 9,
      "kind": "appendix",
      "title": "Beacon Key Table (reprinted from the third edition)",
      "filename": "appendix-a.md",
      "sha256": "baf447920e556e8d5f1794eb443b0016e00743003390cb5c4b0465fb52ea6ef6",
      "status": "obsolete",
      "superseded_by": "erratum-01"
    },
    {
      "id": "erratum-01",
      "ordinal": 10,
      "kind": "erratum",
      "title": "North Beacon Key and Gauge Threshold (signed)",
      "filename": "erratum-01.md",
      "sha256": "25bb20c24b531fdbcd8db04fab3b24ad3a996c5f44a0fb1079d8064d369c00c7",
      "status": "current",
      "supersedes": ["appendix-a"],
      "signed_by": "Mara Venn"
    }
  ],
  "claims": [
    {
      "id": "gh-claim-north-beacon-key",
      "kind": "lexical",
      "question": "Which key does a keeper use to open the north beacon?",
      "answer": "The cobalt key.",
      "sources": ["ch-02", "erratum-01"],
      "must_contain": ["cobalt"],
      "expected_current_assertions": {"north_beacon.key": "cobalt"},
      "forbidden_current_assertions": [
        {"fact": "north_beacon.key", "value": "amber"},
        {"fact": "north_beacon.key", "value": "slate"}
      ]
    },
    {
      "id": "gh-claim-north-beacon-gauge",
      "kind": "lexical",
      "question": "Below what tide gauge reading may the north beacon be lit?",
      "answer": "Below 2.4 metres, read on the tide gauge on the inner mole.",
      "sources": ["ch-02", "erratum-01"],
      "must_contain": ["2.4"],
      "expected_current_assertions": {"north_beacon.threshold_metres": "2.4"},
      "forbidden_current_assertions": [
        {"fact": "north_beacon.threshold_metres", "value": "3.1"}
      ]
    },
    {
      "id": "gh-claim-south-beacon-key",
      "kind": "lexical",
      "question": "Which key opens the south beacon on the Kettle rocks?",
      "answer": "The slate key, at any water level.",
      "sources": ["ch-02"],
      "must_contain": ["slate"],
      "expected_current_assertions": {"south_beacon.key": "slate"},
      "forbidden_current_assertions": [
        {"fact": "south_beacon.key", "value": "cobalt"},
        {"fact": "south_beacon.key", "value": "amber"}
      ]
    },
    {
      "id": "gh-claim-valve-replacement-day",
      "kind": "lexical",
      "question": "On which day of the season was the brass valve on the mole's feed line replaced?",
      "answer": "On day 17.",
      "sources": ["ch-03"],
      "must_contain": ["17"],
      "expected_current_assertions": {"feed_line.brass_valve.replaced_day": "17"},
      "forbidden_current_assertions": [
        {"fact": "feed_line.brass_valve.replaced_day", "value": "12"},
        {"fact": "feed_line.brass_valve.replaced_day", "value": "9"}
      ]
    },
    {
      "id": "gh-claim-kestrel-departure-day",
      "kind": "lexical",
      "question": "On which day is Convoy Kestrel scheduled to leave Lumen Bay?",
      "answer": "Day 21.",
      "sources": ["ch-04"],
      "must_contain": ["21"],
      "expected_current_assertions": {"convoy.kestrel.departure_day": "21"},
      "forbidden_current_assertions": [
        {"fact": "convoy.kestrel.departure_day", "value": "9"}
      ]
    },
    {
      "id": "gh-claim-kestrel-derived-arrival",
      "kind": "derivation",
      "question": "If Convoy Kestrel leaves as scheduled, on which day should it arrive at Ostmark?",
      "answer": "Day 24, derived from its scheduled day 21 departure and its three days of crossing time.",
      "sources": ["ch-04"],
      "must_contain": ["24", "21", "three days"],
      "derivation_inputs": ["21", "three days"],
      "expected_current_assertions": {"convoy.kestrel.derived_arrival_day": "24"},
      "forbidden_current_assertions": [
        {"fact": "convoy.kestrel.derived_arrival_day", "value": "22"}
      ]
    },
    {
      "id": "gh-claim-first-surveyor",
      "kind": "lexical",
      "question": "Who was the first person to survey the harbor of Lumen Bay properly?",
      "answer": "The cartographer Mara Venn.",
      "sources": ["ch-01"],
      "must_contain": ["Mara Venn"],
      "expected_current_assertions": {"lumen_bay.first_proper_surveyor": "Mara Venn"},
      "forbidden_current_assertions": [
        {"fact": "lumen_bay.first_proper_surveyor", "value": "Ivo"}
      ]
    },
    {
      "id": "gh-claim-lantern-meaning",
      "kind": "semantic",
      "question": "When somebody sets a paper lantern on the river at the end of the season, what are they undertaking to do?",
      "answer": "To carry a named piece of unfinished community work further before the next season.",
      "sources": ["ch-05"],
      "must_contain": ["unfinished"],
      "expected_current_assertions": {"river_lantern.purpose": "continue unfinished community work"},
      "forbidden_current_assertions": [
        {"fact": "river_lantern.purpose", "value": "mourning"},
        {"fact": "river_lantern.purpose", "value": "memorial"},
        {"fact": "river_lantern.purpose", "value": "grief"}
      ]
    },
    {
      "id": "gh-claim-manual-ownership",
      "kind": "semantic",
      "question": "If the keeper who wrote the first edition is long gone, who holds this book now?",
      "answer": "Whoever continues the work; the serving keeper holds the book as its current author.",
      "sources": ["ch-08"],
      "must_contain": ["continues"],
      "expected_current_assertions": {"manual.owner": "serving keeper"},
      "forbidden_current_assertions": [
        {"fact": "manual.owner", "value": "first edition author"}
      ]
    },
    {
      "id": "gh-claim-blanks-rationale",
      "kind": "semantic",
      "question": "Why does the original survey leave gaps rather than an estimate?",
      "answer": "Mara Venn recorded only what she could measure twice and left the rest blank, so that a later keeper would fill an entry in and sign it.",
      "sources": ["ch-01"],
      "must_contain": ["measure"],
      "expected_current_assertions": {"survey.blanks.basis": "measured twice"},
      "forbidden_current_assertions": [
        {"fact": "survey.blanks.basis", "value": "estimate"},
        {"fact": "survey.blanks.basis", "value": "guess"}
      ]
    },
    {
      "id": "gh-claim-archive-location",
      "kind": "semantic",
      "question": "Where would a keeper go to consult the original survey sheets?",
      "answer": "In the dressed stone undercroft beneath the eastern observatory.",
      "sources": ["ch-06"],
      "must_contain": ["observatory"],
      "expected_current_assertions": {"sealed_archive.location": "eastern observatory"},
      "forbidden_current_assertions": [
        {"fact": "sealed_archive.location", "value": "lighthouse"}
      ]
    },
    {
      "id": "gh-claim-amber-distrust-basis",
      "kind": "semantic",
      "question": "Is the cartographer's objection to the older beacon instruction a matter of taste?",
      "answer": "No. It rests on a measured near accident and a survey line that was never taken.",
      "sources": ["ch-07"],
      "must_contain": ["near accident"],
      "expected_current_assertions": {"amber_instruction.objection_basis": "measured near accident"},
      "forbidden_current_assertions": [
        {"fact": "amber_instruction.objection_basis", "value": "taste"},
        {"fact": "amber_instruction.objection_basis", "value": "opinion"}
      ]
    },
    {
      "id": "gh-claim-feed-line-lighting-risk",
      "kind": "semantic",
      "question": "Why is a shutdown of the mole's feed line treated as a lighting risk?",
      "answer": "Because the feed line supplies the beacon house; that is why the replacement is recorded with the part number and the hour of shutdown and of restoration.",
      "sources": ["ch-03"],
      "must_contain": ["beacon house"],
      "expected_current_assertions": {"feed_line.supplies": "beacon house"},
      "forbidden_current_assertions": [
        {"fact": "feed_line.supplies", "value": "north beacon"}
      ]
    },
    {
      "id": "gh-claim-valve-before-kestrel",
      "kind": "multi_hop",
      "question": "Was the feed-line valve replaced before or after Convoy Kestrel's scheduled departure?",
      "answer": "Before: the valve was replaced on day 17, and Convoy Kestrel is scheduled to leave on day 21.",
      "sources": ["ch-03", "ch-04"],
      "must_contain": ["17", "21"],
      "expected_current_assertions": {"feed_line.valve_relative_to_kestrel": "before"},
      "forbidden_current_assertions": [
        {"fact": "feed_line.brass_valve.replaced_day", "value": "12"}
      ]
    },
    {
      "id": "gh-claim-harrier-shares-day-with-log",
      "kind": "multi_hop",
      "question": "Which convoy departs on the same day as the first intervention in the keeper's log?",
      "answer": "Convoy Harrier, which departs on day 9, the same day the copper union under the pilot shed was reseated.",
      "sources": ["ch-03", "ch-04"],
      "must_contain": ["Harrier", "9"],
      "expected_current_assertions": {"convoy.departing_with_first_intervention": "Harrier"},
      "forbidden_current_assertions": [
        {"fact": "convoy.departing_with_first_intervention", "value": "Kestrel"}
      ]
    },
    {
      "id": "gh-claim-erratum-signer-role",
      "kind": "multi_hop",
      "question": "Who signed the erratum that withdrew the amber-key instruction, and what was that person's role at Lumen Bay?",
      "answer": "Mara Venn, the cartographer who first surveyed the harbor of Lumen Bay.",
      "sources": ["ch-01", "erratum-01"],
      "must_contain": ["Mara Venn", "cartographer"],
      "expected_current_assertions": {"erratum.signer": "Mara Venn"},
      "forbidden_current_assertions": [
        {"fact": "erratum.signer", "value": "Ivo"}
      ]
    },
    {
      "id": "gh-claim-lantern-and-ownership",
      "kind": "multi_hop",
      "question": "How does the closing chapter's rule about who owns the manual echo the river-lantern ceremony?",
      "answer": "Both turn on unfinished work: the lantern is a promise to carry unfinished community work further, and the manual belongs to whoever continues the work rather than to its original author.",
      "sources": ["ch-05", "ch-08"],
      "must_contain": ["unfinished", "continues"],
      "expected_current_assertions": {"lantern_and_manual.shared_basis": "unfinished work"},
      "forbidden_current_assertions": [
        {"fact": "river_lantern.purpose", "value": "memorial"}
      ]
    },
    {
      "id": "gh-claim-near-accident-drove-erratum",
      "kind": "multi_hop",
      "question": "What became of the amber-key instruction whose danger the manual records?",
      "answer": "It was withdrawn. A relief keeper followed the amber-key instruction on a rising evening tide and a coaster struck the bar, and the signed erratum withdraws the amber key together with the 3.1 metre gauge threshold.",
      "sources": ["ch-07", "erratum-01"],
      "must_contain": ["amber", "withdrawn"],
      "expected_current_assertions": {"amber_instruction.status": "withdrawn"},
      "forbidden_current_assertions": [
        {"fact": "amber_instruction.objection_basis", "value": "taste"},
        {"fact": "amber_instruction.objection_basis", "value": "opinion"}
      ]
    },
    {
      "id": "gh-claim-appendix-key-superseded",
      "kind": "contradiction",
      "question": "Appendix A says the north beacon takes an amber key below 3.1 metres. Is that still correct?",
      "answer": "No. The amber key and 3.1 metre threshold were withdrawn by a signed erratum; the north beacon now takes the cobalt key and is lit only when the gauge reads below 2.4 metres.",
      "sources": ["appendix-a", "erratum-01"],
      "must_contain": ["amber", "3.1", "cobalt", "2.4", "withdrawn"],
      "expected_current_assertions": {
        "north_beacon.key": "cobalt",
        "north_beacon.threshold_metres": "2.4"
      },
      "forbidden_current_assertions": [
        {"fact": "north_beacon.key", "value": "amber"},
        {"fact": "north_beacon.threshold_metres", "value": "3.1"}
      ]
    },
    {
      "id": "gh-claim-unreadable-gauge",
      "kind": "contradiction",
      "question": "The third edition advised lighting the north beacon when the gauge cannot be read. Should a keeper do that?",
      "answer": "No. That advice was withdrawn; if the gauge cannot be read the north beacon stays dark and the keeper records the hour.",
      "sources": ["ch-02", "appendix-a", "erratum-01"],
      "must_contain": ["dark", "withdrawn"],
      "expected_current_assertions": {"north_beacon.unreadable_gauge_action": "stays dark"},
      "forbidden_current_assertions": [
        {"fact": "north_beacon.unreadable_gauge_action", "value": "light it anyway"}
      ]
    },
    {
      "id": "gh-claim-archive-not-lighthouse",
      "kind": "contradiction",
      "question": "Is the sealed archive beneath the lighthouse?",
      "answer": "No. It lies beneath the eastern observatory; the lighthouse foundation is packed rubble on rock and has never held a vault.",
      "sources": ["ch-06"],
      "must_contain": ["observatory", "rubble"],
      "expected_current_assertions": {"sealed_archive.location": "eastern observatory"}
    }
  ],
  "relations": [
    {
      "id": "gh-relation-erratum-supersedes-appendix",
      "subject": "erratum-01",
      "predicate": "supersedes",
      "target": "appendix-a",
      "sources": ["appendix-a", "erratum-01"]
    },
    {
      "id": "gh-relation-venn-signed-erratum",
      "subject": "Mara Venn",
      "predicate": "signed",
      "target": "GH-ERR-01",
      "sources": ["erratum-01"]
    },
    {
      "id": "gh-relation-venn-surveyed-bay",
      "subject": "Mara Venn",
      "predicate": "surveyed",
      "target": "the harbor of Lumen Bay",
      "sources": ["ch-01"]
    },
    {
      "id": "gh-relation-ivo-replaced-valve",
      "subject": "Ivo",
      "predicate": "replaced",
      "target": "the brass valve on the feed line",
      "sources": ["ch-03"]
    },
    {
      "id": "gh-relation-kestrel-crosses-to-ostmark",
      "subject": "Convoy Kestrel",
      "predicate": "crosses to",
      "target": "Ostmark",
      "sources": ["ch-04"]
    },
    {
      "id": "gh-relation-harrier-crosses-to-fell",
      "subject": "Convoy Harrier",
      "predicate": "crosses to",
      "target": "Fell",
      "sources": ["ch-04"]
    },
    {
      "id": "gh-relation-archive-beneath-observatory",
      "subject": "the sealed archive",
      "predicate": "lies beneath",
      "target": "the eastern observatory",
      "sources": ["ch-06"]
    },
    {
      "id": "gh-relation-north-beacon-uses-cobalt-key",
      "subject": "the north beacon",
      "predicate": "is opened with",
      "target": "the cobalt key",
      "sources": ["ch-02", "erratum-01"]
    },
    {
      "id": "gh-relation-south-beacon-uses-slate-key",
      "subject": "the south beacon",
      "predicate": "is opened with",
      "target": "the slate key",
      "sources": ["ch-02"]
    },
    {
      "id": "gh-relation-feed-line-supplies-beacon-house",
      "subject": "the mole's feed line",
      "predicate": "supplies",
      "target": "the beacon house",
      "sources": ["ch-03"]
    }
  ],
  "negative_facts": [
    {
      "id": "gh-negative-captain-sol",
      "question": "Who is Captain Sol?",
      "absent_terms": [
        "Captain Sol"
      ],
      "reason": "No person named Captain Sol appears anywhere in the manual."
    },
    {
      "id": "gh-negative-western-observatory",
      "question": "What is stored in the western observatory at Lumen Bay?",
      "absent_terms": ["western observatory", "western"],
      "reason": "The manual names exactly one observatory, the eastern one; no western observatory appears anywhere in the corpus.",
      "correction": "There is exactly one observatory at Lumen Bay, and the sealed archive lies beneath that eastern observatory.",
      "correction_sources": ["ch-06"],
      "correction_assertions": {"sealed_archive.location": "eastern observatory"}
    },
    {
      "id": "gh-negative-kestrel-day-22",
      "question": "Did Convoy Kestrel arrive on day 22?",
      "absent_terms": [
        "arrive on day 22"
      ],
      "reason": "The manual gives a day 21 departure and a three-day crossing, which derives arrival on day 24 rather than day 22.",
      "correction": "Convoy Kestrel should arrive on day 24, derived from its day 21 departure and three days of crossing time.",
      "correction_sources": [
        "ch-04"
      ],
      "correction_assertions": {"convoy.kestrel.derived_arrival_day": "24"}
    },
    {
      "id": "gh-negative-third-convoy",
      "question": "On which day does Convoy Petrel sail from Lumen Bay?",
      "absent_terms": ["Petrel"],
      "reason": "The manual records two convoys, Harrier and Kestrel; Convoy Petrel does not exist in the corpus.",
      "correction": "Two convoys leave Lumen Bay each season: Harrier on day 9 and Kestrel on day 21.",
      "correction_sources": ["ch-04"]
    },
    {
      "id": "gh-negative-repair-cost",
      "question": "How much did the brass valve replacement cost the harbor authority?",
      "absent_terms": ["cost", "price", "invoice"],
      "reason": "The maintenance log records the part number and the hours of shutdown and restoration; no money figure appears anywhere in the corpus.",
      "correction": "The log records that Ivo replaced the brass valve on day 17, with the part number and the hour of shutdown and of restoration.",
      "correction_sources": ["ch-03"]
    },
    {
      "id": "gh-negative-third-beacon",
      "question": "Which key opens the east beacon?",
      "absent_terms": ["east beacon", "third beacon"],
      "reason": "Lumen Bay lights two beacons, north and south; no third beacon exists in the corpus.",
      "correction": "Lumen Bay lights two beacons: the south beacon on the Kettle rocks with a slate key, and the north beacon with a cobalt key.",
      "correction_sources": ["ch-02"]
    },
    {
      "id": "gh-negative-lantern-funeral",
      "question": "Whose funeral is the river-lantern ceremony held for?",
      "absent_terms": ["funeral"],
      "reason": "The ceremony is a promise to continue unfinished work; the corpus contains no funeral and names no dead.",
      "correction": "A river lantern is a commitment to carry unfinished community work further before the next season.",
      "correction_sources": ["ch-05"]
    },
    {
      "id": "gh-negative-population",
      "question": "What is the population of Lumen Bay?",
      "absent_terms": ["population"],
      "reason": "This is a working field manual for the harbor; it records no census and no population figure."
    }
  ]
}
