CH_08.json

chapters/CH_08/quests/main_story/CH_08.json

{
 "node": "CH_08",
 "quest_id": "QUEST_CH08_CROSSING_UNLOCKED",
 "checker_issues": [
  {
   "kind": "NO_DECLARED_STATE",
   "detail": "14 beats carry no in/out state markers -- flag reachability is UNCHECKED, not passed. Author beats with 'in: local.x -> out: local.y' to make this gradable."
  },
  {
   "kind": "UNSATISFIABLE_COMPLETION",
   "detail": "completion requires local.recognized_on_sight, which no beat produces"
  },
  {
   "kind": "UNSATISFIABLE_COMPLETION",
   "detail": "completion requires local.vessel_resolved, which no beat produces"
  },
  {
   "kind": "UNSATISFIABLE_COMPLETION",
   "detail": "completion requires local.aksumite_pointer_taken, which no beat produces"
  },
  {
   "kind": "UNSATISFIABLE_COMPLETION",
   "detail": "completion requires local.letter_read, which no beat produces"
  },
  {
   "kind": "UNSATISFIABLE_COMPLETION",
   "detail": "completion requires local.departed_north, which no beat produces"
  },
  {
   "kind": "UNSATISFIABLE_COMPLETION",
   "detail": "completion requires local.hold_faced, which no beat produces"
  },
  {
   "kind": "UNSATISFIABLE_COMPLETION",
   "detail": "completion requires local.dhow_boarded, which no beat produces"
  },
  {
   "kind": "UNSATISFIABLE_COMPLETION",
   "detail": "completion requires local.coast_contacts_made, which no beat produces"
  },
  {
   "kind": "UNSATISFIABLE_COMPLETION",
   "detail": "completion requires local.leaving_set, which no beat produces"
  },
  {
   "kind": "CONJUNCTIVE_COMPLETION",
   "detail": "completion joins conditions with AND while forks exist -- an unchosen branch's flags are never set, so the quest cannot close"
  }
 ],
 "checker_status": "DEAD_END_RISK",
 "quest": {
  "node": "CH_08",
  "quest_id": "QUEST_CH08_CROSSING_UNLOCKED",
  "quest_name": "The Ocean That Hides",
  "quest_type": "main_story_per_chapter",
  "questline_id": "(empty — no main-story questline row exists; T0_Questline_Index carries only side (SQ1-SQ12), trade (TRADE_01-10) and legendary (LEG_WPN_*) classes, no main-spine class. The three SQ lanes that ADVANCE alongside this quest are SQ6 pirate_naval [Questline_Index:7, the chapter LEAD], SQ12 secret_societies [Questline_Index:13], SQ1 fairy_tale_folklore [Questline_Index:2]; the trade lane is TRADE_10 Fishing and Navigation [Questline_Index:23]. Those are SEPARATE rows, not this one.)",
  "quest_giver": "environment — giverless. No NPC hands this quest: the node is entered as the continuation of Ch 7's departure by the monsoon coast road, carrying the sealed letter unread [docs/spine/CH_07.md:106, :313; docs/spine/CH_08.md:21]. CH08_B01 carries no giver [CH_08.md:103-107]. `environment` is the established giverless value in this registry (QUEST_CH02_ARRIVAL_UNLOCKED, T0_Quest_Definition_Registry.csv:18); the §6.5 participant-ref grammar has no giverless token, which is named in gaps.",
  "trigger_type": "environmental — the crossing is entered by traveling into the site, not by dialogue and not by an origin-node auto-start. Enum per T1_Build_Pipeline_Contracts [ACTIVE v1.0].md:1457 {giver_dialogue, origin_node_auto, environmental, pursuit, item_or_site}; grounded at CH_08.md:21 and :91 (arrival by sea from South India). NOTE the mid-quest re-trigger at CH08_B09 is `pursuit` (the dhow chase) — the schema holds one trigger_type per row, so the pursuit is carried in the beat structure instead of overwriting the entry trigger.",
  "participants": [
   "protagonist",
   "char:CHAR_0056 — Nakhoda Binti Hassan, the mtepe captain and Trade-10 teacher; one of the chapter's two positive recognitions [CH_08.md:213]",
   "char:CHAR_0055 / boss:BE_0008 / antagonist:NW_0007 — Sayyid Abdallah bin Rashid, the dhow merchant [CH_08.md:97, :271]",
   "char:CHAR_0059 — Scholar-Outsider Amara, the wandering Sufi scholar, the only NPC at Ch 8 who can read the letter's script [CH_08.md:215]",
   "char:CHAR_0061 — Rasheed, held in the dhow's hold, a man with his own road toward refuge [CH_08.md:216]",
   "char:CHAR_0060 — Mutota, the interior gold-route trader [CH_08.md:218]",
   "char:CHAR_0062 — Li Wen, the porcelain merchant [CH_08.md:218]",
   "the coast's waganga healer-diviners, un-named at spine scope — allies, never targets [CH_08.md:214]",
   "the Mijikenda kaya elder, un-named — the second positive recognition [CH_08.md:217]",
   "boss:BE_0008_S1 — the reef-shetani and the Pemba mchawi who binds it [CH_08.md:98; T0_Boss_Encounter_Registry/Sheet1.csv:26]",
   "boss:BE_0008_S2 — the party that came into the kaya [CH_08.md:98; Boss_Encounter_Registry:27]",
   "familiar:kasa_w5 — the green sea turtle, Chelonia mydas [CH_08.md:252]",
   "familiar:msafiri_f3 — the African Fish Eagle, Haliaeetus vocifer [CH_08.md:252]",
   "char:CHAR_0057 al-Hasan ibn Sulaiman and char:CHAR_0058 Ibn Battuta — documented-history figures, present as history, never combat targets [CH_08.md:218, HL_0109]",
   "char:CHAR_0002 — the Healer's Child, carried, watching [CH_08.md:218]"
  ],
  "beats": [
   {
    "beat": "CH08_B01 · seq 1 · hook · traversal · site dhow_open_sea",
    "what_happens": "The first open water since the cave, apprenticed to Nakhoda Binti Hassan on the sewn-plank mtepe — plank-stitching, the rigging traverse (the chapter's one agility course), and a captain who never asks about the cloth wound over the ears. Msafiri bonds over open water. The wordless positive recognition that makes the chapter survivable is planted here, before it is needed.",
    "player_verb": "sail / traverse (agility course, Standard·Hardcore·Puzzle per HL_0079)",
    "cite": "docs/spine/CH_08.md:103-107; :263 (agility course); registries/T0_Hard_Lines [ACTIVE v0.2]/Sheet1.csv:80 (HL_0079)"
   },
   {
    "beat": "CH08_B02 · seq 2 · core · trade · site kilwa_kisiwani",
    "what_happens": "Landfall at the coral-stone island city. Commerce becomes a language — what a person carries into a market and out of it says who they are. Mutota opens the interior gold route, Li Wen the porcelain lane; the ocean web is walked, not narrated. A bench and a door begin, at cost, to matter.",
    "player_verb": "trade / talk",
    "cite": "docs/spine/CH_08.md:108-112; :26; _source/02_Tier_2_Region_Pages/swahili_coast.md:53"
   },
   {
    "beat": "CH08_B03 · seq 3 · core · learning · site kilwa_kisiwani",
    "what_happens": "The Trade-10 Fishing and Navigation ancient home base roots under Binti Hassan: the sewn hull, and the kusi and kaskazi monsoon calendar. The first returnable coastal rootedness. The acquire-and-own mtepe line seeds here — opt-in, a travel convenience and a home on the water, never a gate.",
    "player_verb": "learn (trade tier) / optionally commission a hull",
    "cite": "docs/spine/CH_08.md:113-117; :267-268 (TRADE_10, VH_004 non-gating); registries/T0_Questline_Index [DRAFT v0.1]/Sheet1.csv:23"
   },
   {
    "beat": "CH08_B04 · seq 4 · core · investigation · site pemba",
    "what_happens": "The marked-ship wreckings trace to Pemba. Sit with the coast's waganga; learn the line between the craft that harms and the craft that heals; mark the ONE mchawi who binds the reef-spirit for pay. The healers become allies. THIS IS THE TURN'S FIRST HALF: the wrecks are not weather and not the sea's own temper — someone is aiming them.",
    "player_verb": "investigate / listen",
    "cite": "docs/spine/CH_08.md:118-122; :86; :311; registries/T0_Quest_Seed_Registry [DRAFT v0.1]/Sheet1.csv:37 (SEED_0036)"
   },
   {
    "beat": "CH08_B05 · seq 5 · core · puzzle · site coral_reef_hazard_zones",
    "what_happens": "Run the reef under the shetani's foundering pull; read the kusi and kaskazi timing to find the safe lane through the coral. Kasa bonds on the water. The reef is the wall and the door at once — the region page's own reading of why the causeways exist.",
    "player_verb": "decode (kusi_kaskazi_timing) / traverse",
    "cite": "docs/spine/CH_08.md:123-127; _source/02_Tier_2_Region_Pages/swahili_coast.md:145-153"
   },
   {
    "beat": "CH08_B06 · seq 6 · core · vril_management · sub-boss BE_0008_S1 · site coral_reef_hazard_zones",
    "what_happens": "Hold the warded threshold with the waganga in the ngoma ya majini register and banish the sea-shetani; the true monsoon timing isolates the Pemba mchawi and his binding breaks. Crews recovered, reef freed. The tradition's own condemned malevolent being and its own condemned harmful craft, answered by its own healers — the uganga never conflated with the uchawi, Islam and the community never implicated. Verbs BANISH/TRAVERSE, axis 30/45/25, puzzle-forward.",
    "player_verb": "banish / traverse (ward-hold)",
    "cite": "docs/spine/CH_08.md:128-132; :98; :234; :238; registries/T0_Boss_Encounter_Registry [DRAFT v0.1]/Sheet1.csv:26; T0_Hard_Lines:3 (HL_0002), :4 (HL_0003)"
   },
   {
    "beat": "CH08_B07 · seq 7 · core · combat · sub-boss BE_0008_S2 · site mijikenda_kaya_edge",
    "what_happens": "A party has come into the kaya on the merchant's behalf. Turn the grove's own paths against them, route the warned elder's people clear, rout the intruders. The fight holds to the violated EDGE — the grove is never a battleground. The elder perceives what the protagonist is and accepts rather than hunts: the second positive recognition. Verbs STRIKE/PROTECT, axis 40/25/35.",
    "player_verb": "strike / protect (escort-and-rout)",
    "cite": "docs/spine/CH_08.md:133-137; :87-88; :98; Boss_Encounter_Registry:27; T0_Hard_Lines:4 (HL_0003), :124 (HL_0123)"
   },
   {
    "beat": "CH08_B08 · seq 8 · core · character · site kilwa_kisiwani",
    "what_happens": "THE TURN. Sayyid Abdallah bin Rashid recognises the protagonist on sight — not by their ears, but by a DESCRIPTION that has been moving up the trade-lanes since the eastern seas. The ocean did not hide anything; a written account outran the ship that carried them. Concealment meets a seeing it cannot answer. What keeps the lesson from breaking the child is that two others (the captain, the elder) see just as truly and do not hunt.",
    "player_verb": "endure the encounter (no combat here — the recognition is the event)",
    "cite": "docs/spine/CH_08.md:138-142; :29; :21 (\"where being hidden stops being enough\"); :228; T0_Hard_Lines:29 (HL_0028 — briefed intel, never a tier-6 read)"
   },
   {
    "beat": "CH08_B09 · seq 9 · core · combat · boss BE_0008.P1 · site dhow_open_sea",
    "what_happens": "The dhow pursuit and boarding — chase his vessel through the escort dhows and rigging hazards and get aboard. Rigging-fire answers to a cut-line traversal or a Water ability; the crew pincer to a stagger-break or a gap-jump. Two counters per signature attack, per the Pillar-8 doctrine binding every fight.",
    "player_verb": "board-and-strike (pursuit)",
    "cite": "docs/spine/CH_08.md:143-147; :95; Boss_Encounter_Registry:25 (counters cell)"
   },
   {
    "beat": "CH08_B10 · seq 10 · core · combat · boss BE_0008.P2 · fork FORK_CH08_A · site dhow_open_sea",
    "what_happens": "The deck duel runs across the moral beat of what is below: the hold carries captives taken on the slave route. The chapter's elevated-care centre. FORK_CH08_A resolves here and sets Rasheed's road. Rasheed is a person with his own long walk toward refuge — never cargo texture, never spectacle.",
    "player_verb": "fight / open the hold (or leave it sealed)",
    "cite": "docs/spine/CH_08.md:148-152; :178-186; :216; :229; :241"
   },
   {
    "beat": "CH08_B11 · seq 11 · CLIMAX · vril_management · boss BE_0008.P3 · site dhow_open_sea",
    "what_happens": "The aware-vessel confrontation: the deck-duel set returns as vril-charged versions of the same cuts, with the boarding hazards persisting as arena state (the vril-charged cut answered by a shield-block or by reading its telegraph). DUAL WIN, build-agnostic — part-break the escorts and rigging into an HP finish, OR expose-pacify by setting the hold in front of him as evidence of a bargain he took with open eyes. Both routes complete. Either way the protagonist is left holding an unease they have no way to name.",
    "player_verb": "reduce OR expose (either completes)",
    "cite": "docs/spine/CH_08.md:153-157; :263; Boss_Encounter_Registry:25 (win_condition REDUCE;EXPOSE, has_nonkill_path TRUE)"
   },
   {
    "beat": "CH08_B12 · seq 12 · core · discovery · site kilwa_kisiwani",
    "what_happens": "The letter, read at last. Scholar Amara reads the sealed script at the Kilwa Sufi community and it does not say what was feared. Three implications and nothing more: someone else has stood where the protagonist came from; someone reads this script without having gone; someone speaks its language through the trade-lanes. Full content held to Ch 38. The pointer runs north to Aksum.",
    "player_verb": "bring the letter / listen (inscription beat)",
    "cite": "docs/spine/CH_08.md:158-162; :230; :272; T0_Hard_Lines:96 (HL_0095 — no script identification before this beat, and none of the content beyond the three implications)"
   },
   {
    "beat": "CH08_B13 · seq 13 · core · transformation · fork FORK_CH08_B · site kilwa_kisiwani",
    "what_happens": "The leaving — what the protagonist does with the captain who took them in. Four actions: the promise to return kept with something of one's own left behind; the promise made and left ambiguous; a quiet parting with no promise; or the captain's savings taken and a pre-dawn slip. This is the durable write the coast remembers.",
    "player_verb": "choose the leaving",
    "cite": "docs/spine/CH_08.md:163-167; :188-198; :319"
   },
   {
    "beat": "CH08_B14 · seq 14 · exit · traversal · site dhow_open_sea",
    "what_happens": "Depart north on the letter's Aksumite pointer. The coast keeps a returnable bench and a door; the reef runs free; the chapter ends holding a mystery larger than one child's hiding.",
    "player_verb": "sail north",
    "cite": "docs/spine/CH_08.md:168-172; :91"
   }
  ],
  "objectives": [
   "OBJ_01 · beat CH08_B01 · \"Sail with the captain. Learn how a hull is sewn, and run her rigging.\" → completion flag(local.landfall_made) [CH_08.md:106]",
   "OBJ_02 · beat CH08_B02 · \"Make landfall. Trade in the coral-stone city until the market reads like a language.\" → completion flag(local.coast_contacts_made) [CH_08.md:111]",
   "OBJ_03 · beat CH08_B03 · \"Take the bench under the captain: the sewn hull, and the wind's calendar.\" → completion flag(local.trade10_home_rooted) & flag(local.monsoon_timing_learned) [CH_08.md:116]",
   "OBJ_04 · beat CH08_B04 · \"Follow the marked wrecks to Pemba. Sit with the healers. Learn which craft harms and which heals, and find the one who binds.\" → completion flag(local.uchawi_uganga_line_learned) & flag(local.waganga_alliance) [CH_08.md:121]",
   "OBJ_05 · beat CH08_B05 · \"Run the reef. Read the kusi and the kaskazi, and find the safe lane.\" → completion flag(local.safe_lane_read) [CH_08.md:126]",
   "OBJ_06 · beat CH08_B06 · \"Hold the warded threshold with the waganga. Break the binding, and bring the crews home.\" → completion flag(local.reef_freed) [CH_08.md:131]",
   "OBJ_07 · beat CH08_B07 · \"Turn back the ones who came into the kaya. Get the elder's people clear first.\" → completion flag(local.kaya_secured) [CH_08.md:136]",
   "OBJ_08 · beat CH08_B08 · \"Meet the merchant who already knows your face.\" → completion flag(local.recognized_on_sight) [CH_08.md:141]",
   "OBJ_09 · beat CH08_B09 · \"Chase his dhow through the escorts and board it.\" → completion flag(local.dhow_boarded) [CH_08.md:146]",
   "OBJ_10 · beat CH08_B10 · \"Fight him across his own deck. Then go below.\" → completion flag(local.hold_faced); FORK_CH08_A resolves here [CH_08.md:151, :178]",
   "OBJ_11 · beat CH08_B11 · \"Finish it — break the escorts and the rigging down to him, or set the hold in front of him and end it that way.\" → completion flag(local.vessel_resolved) (either route satisfies) [CH_08.md:156, :263]",
   "OBJ_12 · beat CH08_B12 · \"Take the sealed letter to Scholar Amara. Hear what it says.\" → completion flag(local.letter_read) & flag(local.aksumite_pointer_taken) [CH_08.md:161]",
   "OBJ_13 · beat CH08_B13 · \"Decide what you leave the captain with.\" → completion flag(local.leaving_set); FORK_CH08_B resolves here [CH_08.md:166, :188]",
   "OBJ_14 · beat CH08_B14 · \"Take the road north the letter points down.\" → completion flag(local.departed_north) [CH_08.md:171]"
  ],
  "completion_condition": "flag(local.vessel_resolved) & flag(local.letter_read) & flag(local.departed_north)\n\n(local.departed_north is itself gated on {local.leaving_set, local.aksumite_pointer_taken} at CH08_B14, which chain back through local.letter_read → local.vessel_resolved → local.hold_faced → local.dhow_boarded → local.recognized_on_sight. The reef line (B04-B06) and the kaya line (B07) are core beats that do NOT appear in the completion chain — they gate nothing, matching the spine's own in/out wiring where CH08_B08 takes only local.coast_contacts_made [CH_08.md:141]. Stated so no later lane \"tidies\" them into the chain and manufactures a gate the spine does not have.) [docs/spine/CH_08.md:156, :161, :166, :171]",
  "fail_state": "reward_on_death — every loss in this quest pays out. Enum per T1_Build_Pipeline_Contracts:1462 {none, reward_on_death, retry_with_bank, reroute}. BE_0008 death: \"Sayyid speaks of things the protagonist half-hears and cannot place — the unformed unease deepens; the mystery advances on win and death alike, no fail-wall\" [CH_08.md:97]. BE_0008_S1 death: logs the hazard pattern for the retry [Boss_Encounter_Registry:26]. BE_0008_S2 death: maps the incursion route, and combat never touches the Mijikenda or the grove [Boss_Encounter_Registry:27]. There is no fail state that removes content or reverts progress.",
  "progression_guarantee": "plays_through. Enum per T1_Build_Pipeline_Contracts:1463 {plays_through, branches_reroute, soft_gate_with_alt}. The guarantee is carried by five independent mechanisms, each canon-fixed:\n(1) The boss win is DUAL and build-agnostic — part-break to an HP finish, or expose-pacify with the hold as evidence; both routes complete, so no build and no combat ceiling can wall the chapter [CH_08.md:263, :154; Boss_Encounter_Registry:25 has_nonkill_path TRUE].\n(2) FORK_CH08_A is non-gating BY ITS OWN CLAUSE: \"both boss win routes and the Ch-9 departure play through on either option — the captives' fate sets texture and standing, never a gate, and the hold serves the expose route as evidence either way\" [CH_08.md:179]. Leaving the hold sealed closes the refuge thread and walls nothing [CH_08.md:186].\n(3) FORK_CH08_B is non-gating by its own clause: \"every option plays through to Ethiopia\" [CH_08.md:189]. Robbing the captain breaks her ally status and closes her Ch 9 / Ch 38 recurrences — \"nothing walls — the crossings complete by other means\" [CH_08.md:198].\n(4) The mtepe is opt-in ownership, explicitly \"strictly non-gating — a travel convenience and a returnable home on the water, never a wall, the crossing to Ch 9 and the whole arc completing whether or not the mtepe is owned, and the boss and quest lines fully playable without it\" [CH_08.md:268].\n(5) No twelve-tier gate binds at Ch 8, and the three SQ gates are state-conditions that are \"non-gating on the main spine\" [CH_08.md:209].\nKilling-an-NPC check: the only human kill targets in this quest are Abdallah (who has a non-kill EXPOSE route) and the kaya intruders (BE_0008_S2). Neither carries a downstream key. The letter is read by CHAR_0059 Amara, who is not a combat participant in any beat, and is the only Ch-8 reader of the script [CH_08.md:215] — so no reachable kill can strand local.letter_read. Named as a residual risk in gaps: the spine does not state an alternate reader if Amara is killed by sandbox violence, which HL_0123 permits [T0_Hard_Lines:124].",
  "branching_logic": "Two typed durable forks plus one build-agnostic win split, all pre-lock (path_bucket UNLOCKED until Ch 65; the five texture bands are DERIVED at §18, never option labels) [CH_08.md:200, :283].\n· FORK_CH08_A (anchor CH08_B10, magnitude SUBSTANTIAL, kind combat_resolution, care_band ELEVATED, convergence_node null) — coverage {generative, corrosive}; no neutral middle exists at the hold because the spine authors freed-or-not [CH_08.md:180, :320].\n· FORK_CH08_B (anchor CH08_B13, magnitude SUBSTANTIAL, kind exploration_interaction, care_band open, convergence_node null) — coverage {generative, neutral, corrosive}, four ACTION-keyed options [CH_08.md:189-198].\n· CH08_B11 win split (REDUCE vs EXPOSE) is a ROUTE, not a fork: it writes the same ws.antagonist_operational_state_per_region value and neither route hands over anything about who briefed him [CH_08.md:154, :156].\n· NOT a fork, stated so no lane re-types it: the freeing of the reef at CH08_B06 is a mandatory main-spine sub-boss outcome with a reward-both-ways loss route; there is no authored leave-the-reef-bound branch, and typing one would be invention [CH_08.md:318].\n· Dispatch order at chapter close: FORK_CH08_A writes first (B10), FORK_CH08_B second (B13); both feed ws.integrity_score at Substantial class and both are read forward at the Ch-59 Africa continental revisit [CH_08.md:191, :276].",
  "fork_options": [
   "FORK_CH08_A opt.1 — break the hold open and free the captives; Rasheed walks out of the dark of the ship into the Sufi community's keeping. direction generative, delta +Substantial. Writes ws.relationship_history (rasheed freed to his own road), ws.faction_standing_per_faction (kilwa_sufi_community rises), ws.integrity_score +substantial-generative. Opens: Rasheed carried forward as a person (the refuge thread); the freed hold weighs into the expose route. [CH_08.md:185]",
   "FORK_CH08_A opt.2 — leave the hold sealed; the captives uncovered as evidence only, never freed. direction corrosive, delta −Substantial. Writes ws.relationship_history (rasheed unfreed — the refuge never given), ws.integrity_score −substantial-corrosive. Closes the refuge thread; walls nothing, the evidence still serves the expose route. [CH_08.md:186]",
   "FORK_CH08_B opt.1 — keep the promise to return and leave something of your own in return. generative, +Substantial. mark_write {swahili_coast: generative-valence via the kept promise, permanent, forward_track [CH_59]}; ws.relationship_history binti_hassan ally-held; opens the Ch 9 and Ch 38 crossing recurrences and the Ch-59 keeper-stands-with read. [CH_08.md:195]",
   "FORK_CH08_B opt.2 — make the promise but leave it ambiguous. neutral, +Accumulative. mark_write {swahili_coast: ambivalent-valence, persistent, forward_track [CH_59]}; binti_hassan unresolved; the crossing recurrences hold, cooler. [CH_08.md:196]",
   "FORK_CH08_B opt.3 — part quietly, no promise made. neutral, ~0. mark_write {swahili_coast: unmarked quiet parting, transient, forward_track none}; no relationship write. [CH_08.md:197]",
   "FORK_CH08_B opt.4 — take the captain's savings and slip out before dawn. corrosive, −Substantial. mark_write {swahili_coast: corrosive-valence via the theft remembered, permanent, forward_track [CH_59]}; ws.relationship_history binti_hassan betrayed (ally status broken); closes the Ch 9 and Ch 38 captain recurrences — the crossings complete by other means — and opens the Ch-59 cold-read reception instead. [CH_08.md:198]"
  ],
  "irreversible_choice": "THE HOLD (FORK_CH08_A, anchor CH08_B10). The falsifier forces the pursuit; the pursuit puts the player on the deck above a hold that has people in it, and the ship does not stay boarded twice. Both limbs, named with their price:\n· OPEN IT — the captives walk off. Rasheed becomes a person with a road instead of a fact you learned, and he is carried forward into the Kilwa Sufi community's keeping. Cost: you have spent the fight's tempo and shown your hand to a man who already had your description, and the Sufi community's standing now ties you to a place you were using precisely because nobody there knew you. Writes ws.relationship_history, ws.faction_standing_per_faction, ws.integrity_score +substantial-generative.\n· LEAVE IT SEALED — the hold becomes evidence and nothing else. You still win, by either route; the expose route still works, because the spine gives the sealed hold to it as evidence either way. Cost: the refuge thread never opens, Rasheed is a man you counted and left, and the world keeps that. Writes ws.relationship_history (rasheed unfreed), ws.integrity_score −substantial-corrosive.\nIrreversible means the world KEEPS it, never that a path closes to progression: the Ch-9 departure plays on either limb [CH_08.md:179].\nWorld-memory keys the choice writes (all live T0_Worldstate_Variables names): ws.relationship_history (WS_008), ws.faction_standing_per_faction (WS_021), ws.integrity_score (WS_001). The second irreversible write, the leaving at FORK_CH08_B, is the load-bearing durable mark read at the Ch-59 Africa continental revisit [CH_08.md:191].\nCare note, binding on this cell: the slave-trade substrate is carried at ELEVATED care through Rasheed as a person with his own road, never set-dressing and never spectacle; Abdallah's participation is his individual crime, never the community's and never the faith's [CH_08.md:181, :241].",
  "state_writes": [
   "ws.familiar_bond_state: +msafiri_bonded — CH08_B01 [CH_08.md:106; WS_012]",
   "ws.familiar_bond_state: +kasa_bonded — CH08_B05 [CH_08.md:126; WS_012]",
   "ws.antagonist_operational_state_per_region: +reef_binding_broken_crews_recovered — CH08_B06 [CH_08.md:131; WS_020]",
   "ws.faction_standing_per_faction: +waganga_warding_trust — CH08_B06 [CH_08.md:131; WS_021]",
   "ws.relationship_history: +kaya_elder_positive_recognition — CH08_B07 [CH_08.md:136; WS_008]",
   "ws.identity_hiding_status: CONCEALMENT_WITH_HOSTILE_RECOGNITION, pressure HIGH — CH08_B08; the arc's first instance of this value [CH_08.md:141, :294; WS_025]",
   "ws.reputation_biography_propagation: +description_on_the_trade_lanes — CH08_B08; the hostile-recognition intel begins accruing [CH_08.md:141, :305; WS_026]",
   "ws.antagonist_operational_state_per_region: +first_aware_vessel_toppled_or_exposed — CH08_B11, written identically on both win routes [CH_08.md:156, :97; WS_020]",
   "ws.relationship_history: rasheed freed | rasheed unfreed — FORK_CH08_A at CH08_B10 [CH_08.md:185-186; WS_008]",
   "ws.faction_standing_per_faction: kilwa_sufi_community +standing (generative limb only) — FORK_CH08_A [CH_08.md:185; WS_021]",
   "ws.integrity_score: ±substantial per FORK_CH08_A and FORK_CH08_B, Substantial class — [CH_08.md:185-186, :195-198, :276; WS_001]",
   "ws.relationship_history: binti_hassan {ally-held | unresolved | betrayed} — FORK_CH08_B at CH08_B13 [CH_08.md:195-198; WS_008]",
   "mark_write {swahili_coast: valence per FORK_CH08_B, forward_track [CH_59]} — the leaving mark, the chapter's load-bearing durable write, read at the Ch-59 Africa continental revisit [CH_08.md:191, :195-198]. NOTE: the spine types this as a `mark_write`, not as a ws.<key>; the binding is named in gaps rather than guessed.",
   "trade_homes: +TRADE_10 ancient (Swahili Coast), paired with the Ch 56 modern home — CH08_B03 [CH_08.md:116, :267, :305]",
   "letter: read — the Aksumite pointer opens Ch 9, full content held to Ch 38 — CH08_B12 [CH_08.md:161, :305]",
   "ws.age_stage: Childhood held (internal 10→11 across the chapter, designer-only, never surfaced) [CH_08.md:13, :288; WS_007]",
   "DERIVED at close, never written as an option label: integrity_level L3 Drifting (WS_002), world_state_current WS3 Neutral (WS_003), path_bucket UNLOCKED (WS_004, committed only at Ch 65) [CH_08.md:283]"
  ],
  "reward_class": "mixed. Enum per T1_Build_Pipeline_Contracts:1472 {ability_unlock, loot_drop, seed_unlock, substrate_narrative, mixed}. Payload: the Trade-10 Fishing and Navigation kit and ancient home base; the opt-in ownable mtepe (VH_004, the vehicle-ownership debut, non-gating); the sea-jini / uchawi-uganga lore (receiving LINK_0149 and LINK_0168); the naval-combat and navigation depth; the antagonist-mystery intel with the pattern held from the player; the freed captives and the freed reef; the Sealed-Letter reading; and the Kasa (W5) and Msafiri (F3) bonds [CH_08.md:278].\n· ability_unlock_refs = EMPTY. \"abilities_unlocked none new at Ch 8 — the kit carried from Ch 2-7 holds and no Ability_Tree row anchors here\" [CH_08.md:264]. This is a canon-fixed absence, not an omission.\n· reward_drop_refs = EMPTY — deferred, [POPULATE→T0_RNG_Drop_Table] [CH_08.md:278].\n· encounter_facet = folklore, on the strength of BE_0008_S1 target_type folklore_malevolent_being [Boss_Encounter_Registry:26; enum at Contracts:1448 {folklore, materialized_argument, none}].",
  "hard_line_refs": [
   "HL_0077 (T1_Combat §7) — Ch 8 is one of the five Tier-A Solo Base chapter-level Boss anchors; Pillar-8 blended-mode requirement binds BE_0008. [T0_Hard_Lines:78; CH_08.md:12, :95]",
   "HL_0035 + HL_0103 (CVD §17.7 / T4_HoV §6) — the antagonist family's canonical names and the Inner-Council sector structure exist at DESIGN level only here. Josh's ruled Q1 handling: the name is NOT announced at Ch 8 and the player is NOT made aware of any pattern; the patriarch does not appear. [T0_Hard_Lines:36, :104; CH_08.md:99, :312]",
   "HL_0028 + HL_0017 (CVD §17.5) — substrate-perception unlocks at Adeptus Minor; the protagonist is at the Neophyte floor. The recognition at CH08_B08 therefore runs through briefed intelligence (a circulated description), NEVER a tier-6 vril read. [T0_Hard_Lines:29; CH_08.md:17, :99, :264]",
   "HL_0003 (CVD §17.1) — the faithful community and its living tradition are never the story antagonist. Combat routes through Abdallah as an individual, the shetani, the mchawi, and the kaya intruders. Never the Swahili community, Islam, the Sufi orders, the waganga, or the Mijikenda. [T0_Hard_Lines:4; CH_08.md:17, :62, :234]",
   "HL_0002 (CVD §17.1) — living-tradition claims trace to primary-source record; mythic monsters carry fantasy licence. The sea-shetani is the coast's OWN condemned malevolent being and the Pemba uchawi its OWN condemned harmful craft, grounded in the older documented sea-jini cosmology and never Popobawa by name. [T0_Hard_Lines:3; CH_08.md:3, :238]",
   "HL_0006 (CVD §17.1) — no stereotyped descriptors; each culture self-names. Every objective string uses the coast's own words: mtepe, nakhoda, kusi, kaskazi, waganga, uganga, uchawi, mchawi, ngoma ya majini, kaya. [T0_Hard_Lines:7]",
   "HL_0123 (CVD §17.16) — lethal violence against human NPCs is core; maturity is weight and consequence. Abdallah, his crew, and the kaya intruders are legitimate kill targets; the non-kill EXPOSE route exists as an option, not a moral requirement. [T0_Hard_Lines:124]",
   "HL_0109 (T4_HoV §11) — documented-history figures (al-Hasan ibn Sulaiman CHAR_0057, Ibn Battuta CHAR_0058) are present as history and never conflated with the negative-consciousness interpretation; neither is a combat target. [T0_Hard_Lines:110; CH_08.md:218]",
   "HL_0095 (T1_Languages §8) — no fairy-realm-script identification before this chapter's in-chapter reveal; CH08_B12 is the first identification in the arc, and surfaces the three implications only. The limit is the knowledge's, never framed as the protagonist's skill failure. [T0_Hard_Lines:96; CH_08.md:162, :314]",
   "HL_0043 + HL_0046 (CVD §17.9) — the thesis is never declared; the Ch 76-77 reveal is the single canonical surfacing; the reveal-authority never speaks and is never a participant. No surface of this quest carries a hint. [T0_Hard_Lines:44, :47; CH_08.md:247]",
   "HL_0051 (CVD §17.10) — a hard-line chapter without a combat layer is a pillar violation. Ch 8 carries a full combat layer (one main boss, two sub-bosses) — protection is delivered by ROUTING the fight, never by removing it. [T0_Hard_Lines:52; CH_08.md:234]",
   "HL_0079 (T1_Combat §8) — one agility course minimum per chapter, documented-site grounded, three variants. Ch 8's is the mtepe dhow-rigging traverse with a monsoon-timing Puzzle variant. [T0_Hard_Lines:80; CH_08.md:263]",
   "HL_0032 (CVD §17.6) — the twelve SQ names are locked; SQ6 pirate_naval, SQ12 secret_societies and SQ1 fairy_tale_folklore ADVANCE alongside this quest as separate rows. [T0_Hard_Lines:33; CH_08.md:204-208]",
   "Promise-ledger edges bound to this node: PL_0047 (CH_08 → EPILOGUE, the ownable-vessel chain opening at the mtepe) [T0_Promise_Ledger:48]; PL_0076 (CH_08 → CH_57, the kaya elder as the arc's first individual-perceiver, escalating to the Ch-57 elder recognition) [T0_Promise_Ledger:77]; PL_0094 (CH_08 → CH_76, the broker-rep track — reveal_ceiling CH_76, pre-reveal it is invisible-to-the-player scaffolding and is deliberately NOT surfaced here) [T0_Promise_Ledger:95; CH_08.md:322]"
  ],
  "named_gaps": [
   "THE MAIN QUEST HAS NO SEED ROW. All six T0_Quest_Seed_Registry rows pinned to CH_08 are side/trade/bond seeds — SEED_0034 (SQ6), SEED_0035 (SQ12), SEED_0036 (SQ1), SEED_0037 (TRADE_10 home base), SEED_0038 (Kasa bond), SEED_0039 (Msafiri bond) [Quest_Seed_Registry:35-40]. This definition is derived from the spine beat graph, not from a seed. That is the correct source for a main-story row, but it means there is no independent second witness for the main line.",
   "reward_seed_refs LEFT EMPTY. SEED_0037/0038/0039 are realized INSIDE main-spine beats (B03, B01, B05), so they are arguably this quest's seed rewards — but the field's semantics are not fixed by any populated exemplar (the only populated row, QUEST_CH02_ARRIVAL_UNLOCKED, leaves it []) and the two readings (rewards-that-are-seeds vs seeds-this-quest-plants) point at different content. Not guessed. Needs a schema ruling.",
   "quest_dialogue_sfx_id_ref_array LEFT EMPTY. T0_SFX_Registry carries ZERO rows tagged swahili / CH_08 / reef / dhow (verified by grep count, not assumed). The spine defers the whole substrate [POPULATE→T0_SFX_Registry, CH_08.md:257]. Cannot be filled without inventing SFX ids.",
   "dialogue_dataset_array UNVERIFIED. The convention from the exemplar is docs/quest_dialogue/DD_<quest_id>.csv; the target file for this quest does not exist yet. The path is a convention, not a canon cite — do not treat it as populated.",
   "THE FORK_CH08_B MARK IS NOT BOUND TO A ws.<key>. The spine types the leaving as mark_write {swahili_coast: …, forward_track [CH_59]} [CH_08.md:195-198]. WS_019 community_state_per_region is the plausible target and WS_026 reputation_biography_propagation is a second candidate, but the spine names neither. Left unbound rather than guessed — this matters because harness/check_quest_turn.py tooth Q2 checks that world_memory_write resolves to a live variable_name.",
   "quest_giver HAS NO GIVERLESS TOKEN. The §6.5 grammar is char:/antagonist:/boss:/creature:/familiar:/protagonist [Contracts:1456]; `environment` (the exemplar's value) is outside it. Ch 8 is genuinely giverless. Either the enum needs a giverless member or the exemplar is off-grammar; flagged, not resolved here.",
   "AMARA HAS NO STATED ALTERNATE READER. HL_0123 permits emergent violence against ordinary NPCs [T0_Hard_Lines:124], and CHAR_0059 is the only Ch-8 NPC who can read the letter's script [CH_08.md:215]. The spine states no fallback if a player kills her before CH08_B12. This is the one reachable no-dead-end risk in the node. It needs a ruling (invulnerable-until-read, a second reader in the Sufi community, or a deferred read at Ch 9) — I have NOT authored one, because inventing a second script-reader would touch HL_0095 reveal scope.",
   "THE CASTING IS KNOWN-STALE ON CHAR_0056. D-CAST (Josh, 2026-07-19) rules Binti Hassan an invested_sticky ship-keeper who JOINS at Ch 8 and is present Ch 8→65; T0_Character_Index encodes exactly that, while this spine entry still carries the pre-ruling recurring-NPC model in four places [CH_08.md:323]. Two derived collisions the spine names and this definition inherits: (a) FORK_CH08_B's four options are all LEAVINGS, which a Ch-8 signing re-frames rather than deletes; (b) the ratified card ties the signing to a ship acquired on this coast, while the mtepe is strictly opt-in and non-gating, so the signing must be reachable whether or not a hull is ever owned. I have authored FORK_CH08_B to the SPINE as it stands, since the reconciliation is a multi-node re-shape the queue owns. When it lands, this row's FORK_CH08_B options and participant list move with it.",
   "FR-08 IS DELIBERATELY NOT TYPED. PL_0094 hangs a broker-rep track off this node [Promise_Ledger:95], but the spine states it has no Ch-8 player surface and refuses to type it [CH_08.md:322]. Left untyped here for the same reason — and because typing it pre-reveal would be the exact leak HL_0043 forbids.",
   "PHASE HP/DAMAGE/TIMING NUMBERS DO NOT EXIST ANYWHERE. Verbs, axis splits, counters, phase triggers (composure_break) and win conditions are canon [Boss_Encounter_Registry:25-27]; encounter tuning is not. A builder gets the SHAPE of BE_0008 from this row, not its numbers."
  ],
  "grounding": "SPINE (primary): docs/spine/CH_08.md — :1 (chapter title, source of quest_name) · :3 (reveal + care framing) · :7-17 (header, hard_line_binding, identity_hiding_status) · :21 (continuity anchor, \"where being hidden stops being enough\") · :25-31 (body prose — the premise and its falsification) · :62 (combat routing) · :81-91 (typed site rows) · :95-99 (boss structure, dual win, reveal binding) · :103-172 (the 14 typed beats, each with in/out state) · :174 (mode variety) · :178-200 (FORK_CH08_A, FORK_CH08_B, option tables, progression_guarantee clauses) · :204-209 (SQ lanes, twelve_level_gate none) · :213-218 (ally NPCs) · :224-230 (scene anchors SC_CH08_the_crossing / reef_spirit_warded / the_enemy_who_knows / the_hold / the_letter) · :234 (protected-chapter combat framing) · :238-241 (anti-fringe flags) · :245-247 (three-layer surfacing) · :251-258 (asset anchors) · :262-279 (mechanical anchors: dominant mode, abilities none, TRADE_10, VH_004, familiars, NW_0007, inscription, rewards) · :283-295 (derived axes and end-state carry-forward) · :305 (CH_08→CH_09 seam) · :311-323 (ratified decisions, D-CAST staleness).\nHANDOFF: docs/spine/CH_07.md:106, :185-187, :313 (the Sealed Letter entrusted unread, script deliberately unidentified until Ch 8).\nREGION: _source/02_Tier_2_Region_Pages/swahili_coast.md:9-13 (care framing) · :21-22 (sub-regions, coordinates) · :34 (Abdallah's corruption is his own) · :36-37 (familiars, durable social writes) · :53-56 (the five zone rows with built-frontage dimensions and lat/long envelopes) · :59-91 (zone-bounds derivation, elevated-handling reasons) · :112-119 (sub-boss and SQ join, the five scene anchors) · :130-153 (reef geography; why the causeways exist).\nREGISTRIES: registries/T0_Quest_Definition_Registry [ACTIVE v1.0]/T0_Quest_Definition_Registry.csv:18 (QUEST_CH02_ARRIVAL_UNLOCKED — the only populated exemplar, 31/48 cells; shape copied) · T0_Boss_Encounter_Registry [DRAFT v0.1]/Sheet1.csv:25 (BE_0008 verbs/axis/counters/win_condition REDUCE;EXPOSE/has_nonkill_path/ws_writes), :26 (BE_0008_S1 banish/traverse 30/45/25, target_type folklore_malevolent_being), :27 (BE_0008_S2 strike/protect 40/25/35, target_type intruder) · T0_Chapter_Index [ACTIVE v1.2]/T0_Chapter_Index DRAFT v1.1.csv:10 (CH_08 row — combat routing, CHAR_0055-0062, BE_0008 + subs, thread grid T01:E/T03:C, SQ6/SQ12/SQ1 ADVANCE, PRE_SCHOOL_WINDOW) · T0_Quest_Seed_Registry [DRAFT v0.1]/Sheet1.csv:35-40 (SEED_0034-0039) · T0_Questline_Index [DRAFT v0.1]/Sheet1.csv:2 (SQ1), :7 (SQ6), :13 (SQ12), :23 (TRADE_10) · T0_Promise_Ledger [DRAFT v0.1]/Sheet1.csv:48 (PL_0047), :77 (PL_0076), :95 (PL_0094) · T0_Hard_Lines [ACTIVE v0.2]/Sheet1.csv:3 (HL_0002), :4 (HL_0003), :7 (HL_0006), :29 (HL_0028), :33 (HL_0032), :36 (HL_0035), :44 (HL_0043), :47 (HL_0046), :52 (HL_0051), :78 (HL_0077), :80 (HL_0079), :96 (HL_0095), :104 (HL_0103), :110 (HL_0109), :124 (HL_0123) · T0_Worldstate_Variables [ACTIVE v0.1]/Sheet1.csv (WS_001 integrity_score, WS_007 age_stage, WS_008 relationship_history, WS_012 familiar_bond_state, WS_019 community_state_per_region, WS_020 antagonist_operational_state_per_region, WS_021 faction_standing_per_faction, WS_025 identity_hiding_status, WS_026 reputation_biography_propagation).\nSCHEMA: _source/01_Tier_1_Foundation/T1_Build_Pipeline_Contracts [ACTIVE v1.0].md:1447 (quest_type enum), :1448 (encounter_facet enum), :1456 (quest_giver grammar), :1457 (trigger_type enum), :1462 (fail_state enum), :1463 (progression_guarantee enum, wired to harness/check_no_dead_end.py), :1472 (reward_class enum), :2428 (fork options are ACTION-keyed, two to six, never one-per-band) · harness/apply_quest_turn_columns.py:22-38 (the premise_as_given / falsifier / irreversible_choice / world_memory_write doctrine and the W3 teacher mechanism) · CLAUDE.md (authority hierarchy, §17 floor, reveal discipline, rated-M content bar).\nNEGATIVE CONTROLS RUN (zeros that were verified, not assumed): T0_SFX_Registry grep for swahili|CH_08|reef|dhow → 0 rows, so the SFX array is empty by fact; T0_Scene_Spec_Registry grep for CH08 → 0 rows, so the five scene anchors are spine-authored and not yet rowed.\nTHE FALSIFIER, stated separately because it is the cell the whole row turns on: the premise \"distance hides you\" is falsified at CH08_B08 by the discovery that a DESCRIPTION of the protagonist has been travelling up the trade-lanes since the eastern seas and arrived ahead of the ship that carried them [CH_08.md:139-141, :29]. It is not a complication or a bigger version of the same danger — a written account moving faster than a body cannot coexist with hiding-by-distance. The world records it: ws.reputation_biography_propagation +description_on_the_trade_lanes, and ws.identity_hiding_status moves ACTIVE_CONCEALMENT → CONCEALMENT_WITH_HOSTILE_RECOGNITION at pressure HIGH [CH_08.md:141]. Reveal check on this cell: the discovery is a description and a man who read it — no family, no organisation, no pattern, negated or otherwise; the player is left with \"an unformed unease they cannot yet name\" [CH_08.md:154], which is exactly the ruled Q1 handling [CH_08.md:312].",
  "progression_guarantee_STATUS": "UNVERIFIED -- critic demolished the stated guarantee"
 }
}

Generated by harness/site/structure_site.py — the URL path is the repo path. review root