{
  "schema_version": "2.0",
  "campos": {
    "aventura": "sangre_y_poder",
    "estado": "creacion|en_curso|completada|muerto",
    "execution_mode": "runtime_capability_probe_v1|phased_router_v1|free_vnext|complete_runtime|html_loader|structured",
    "runtime_capability_probe_completed": "boolean",
    "runtime_capability_probe_version": "string|null",
    "runtime_capability_gate": "pass|no_pass|null",
    "session_runtime": "normal|free",
    "runtime_selection_lock": "boolean",
    "normal_runtime_lock": "boolean",
    "free_session_lock": "boolean",
    "runtime_selection_reason": "capability_probe|explicit_free_request|preexisting_session|null",
    "current_phase_id": "phase_id",
    "current_phase_loaded": "boolean",
    "previous_phase_id": "phase_id|null",
    "visited_phase_ids": "array<phase_id>",
    "router_version": "string",
    "dia": "integer",
    "hora_aprox": "HH:MM",
    "localizacion": "scene_id",
    "dalma": {
      "nombre": "string",
      "raza": "string",
      "profesion": "string",
      "nivel": "integer",
      "vida_actual": "integer",
      "vida_maxima": "integer",
      "pri_actual": "integer",
      "pri_maximo": "integer",
      "atributos_base": "object",
      "atributos_finales": "object",
      "maniobras_base": "object authoritative composite copied from selected dalma_id in 04_DALMAS_NIVEL_I.json",
      "maniobras_efectivas": "object maniobras_base + innate ability + equipment + level + temporary/situational modifiers; never add race/profession again",
      "composicion_valores": {
        "attributes_source": "04_DALMAS_NIVEL_I.json selected dalma_id",
        "maneuvers_source": "04_DALMAS_NIVEL_I.json selected dalma_id",
        "race_profession_already_applied": true
      },
      "capacidad_innata": "object",
      "equipo": "array",
      "inventario": "array",
      "monedas": {
        "oro": "integer",
        "plata": "integer",
        "bronce": "integer"
      }
    },
    "conocimiento_dalma": "array<fact_id>",
    "pnj_conocidos": "array<npc_id>",
    "confianza_pnj": "object npc_id:number",
    "escenas_visitadas": "array<scene_id>",
    "pistas": "array<clue_id>",
    "revealed_card_assets": "array<card_id>",
    "consumibles_usados": "array",
    "enemigos": {
      "rumal": "vivo|muerto|muerto_viviente|caido",
      "darfil": "vivo|muerto|muerto_viviente|caido",
      "lider": "ritual|vampiro|muerto"
    },
    "karlein": "desaparecido|atado|sacrificado|resucitado|liberado|devuelto",
    "ritual": "pendiente|fase_1|transformacion|fase_2|terminado",
    "libro": "no_descubierto|descubierto|en_inventario|entregado_heldris|otro",
    "banderas_dia2": {
      "celdris_visto_en_posada": "boolean",
      "nombre_heldris_descubierto_por_celdris": "boolean",
      "celdris_seguido": "boolean",
      "heldris_visitado_antes_de_tiempo": "boolean",
      "heldris_paquete_recibido": "boolean",
      "heldris_genealogia_confirmada": "boolean",
      "heldris_disponible": "boolean",
      "heldris_contactado_por_iniciativa_del_dalma": "boolean",
      "nota_heldris_activada": "boolean",
      "asher_consultado_sobre_colina": "boolean"
    },
    "experiencia": {
      "px_inicial": "integer",
      "px_ganados_aventura": "integer",
      "px_total": "integer",
      "eventos_contabilizados": "array<xp_event_id>",
      "resumen_final_mostrado": "boolean"
    },
    "desviacion_y_ejemplos": {
      "fuera_linea_canon": "boolean",
      "situaciones_imprevistas": "array<object>",
      "ejemplos_partida_consultados": "array<example_id>",
      "pnjs_emergentes": "array<object>"
    },
    "final_alternativo_demonio": {
      "activado": "boolean",
      "demonio_pifia_ocurrida": "boolean",
      "dalma_666_ocurrido": "boolean",
      "proeza_completada": "boolean",
      "botin_obtenido": "boolean"
    },
    "participacion_postpartida": {
      "resumen_ofrecido": "boolean",
      "pnjs_emergentes_ofrecidos": "boolean",
      "propuesta_preparada": "boolean"
    },
    "CURRENT_DAY": "integer|null; alias synchronized atomically with dia",
    "CURRENT_TIME_APPROX": "HH:MM|null; alias synchronized atomically with hora_aprox",
    "TIME_OF_DAY": "madrugada|mañana|mediodía|tarde|anochecer|noche|noche_avanzada|víspera_del_amanecer|null",
    "ELAPSED_TIME": "duration|null",
    "CURRENT_SCENE": "scene_id|null; alias synchronized with current_phase_id for playable scenes",
    "CURRENT_LOCATION": "location_id|null; alias synchronized with localizacion",
    "LAST_PLAYER_ACTION": "object|string|null",
    "LAST_RESOLVED_EVENT": "object|string|null",
    "STATE": "open object preserving all canonical operational flags; unknown fields remain null",
    "REVEALED_STATE": "open object containing only legitimately revealed facts",
    "XP_LEDGER": "array<unique xp event objects>; private and idempotent",
    "active_gameplay": "boolean",
    "free_mode": "boolean",
    "free_capsule_id": "integer|null",
    "temporal_control": {
      "soft_time": "estimated narrative durations",
      "action_time_policy": "all resolved player and creator actions advance estimated global time",
      "hard_time_events": "array<object>",
      "caution_is_not_automatic_delay_failure": true,
      "deliberate_delay_can_cause_failure": true
    },
    "cortijo_discoveries": {
      "rest_areas_discovered": "boolean|null",
      "camp_beds_discovered": "boolean|null",
      "tools_discovered": "boolean|null",
      "food_remains_discovered": "boolean|null",
      "dark_cloth_discovered": "boolean|null",
      "dark_cloth_taken": "boolean|null",
      "dark_cloth_location": "cortijo|inventory|other|null"
    },
    "scene19_control": {
      "status": "not_completed|active|completed",
      "scene19_started": "boolean|null",
      "gruta_climax_completed": "boolean|null",
      "scene19_completion_day": "integer|null",
      "scene19_completion_time": "HH:MM|null",
      "post_scene19_demon_deadline": "datetime|null",
      "variant_A_disabled": "boolean|null",
      "ritual_progress": "object|null",
      "entry_variant": "normal_follow|one_sectarian_absent|sectarians_eliminated_after_cave_location_known|sectarians_eliminated_cave_found_late|null"
    },
    "karlein_control": {
      "alive": "boolean|null",
      "with_dalma": "boolean|null",
      "delivered_to_asher": "boolean|null",
      "rescued": "boolean|null",
      "transformed_into_demon": "boolean|null",
      "body_disappeared": "boolean|null"
    },
    "demon_control": {
      "active": "boolean|null",
      "variant": "A_eclipse_without_scene19|B_post_scene19_alive_deadline|C_post_scene19_karlein_death|null",
      "current_life": "integer|null",
      "defeated": "boolean|null",
      "external_healing_allowed": false
    },
    "CURRENT_TIME": "HH:MM|null; canonical global clock, synchronized atomically with CURRENT_TIME_APPROX and hora_aprox"
  },
  "valores_iniciales_control_fases": {
    "execution_mode": "runtime_capability_probe_v1",
    "runtime_capability_probe_completed": false,
    "runtime_capability_probe_version": "1.0",
    "runtime_capability_gate": null,
    "session_runtime": "free",
    "runtime_selection_lock": false,
    "normal_runtime_lock": false,
    "free_session_lock": false,
    "runtime_selection_reason": null,
    "current_phase_id": "DALMA_CREATION",
    "current_phase_loaded": false,
    "previous_phase_id": null,
    "visited_phase_ids": [],
    "router_version": "1.0"
  },
  "runtime_capability_selection": {
    "probe_scope": "BOOT_ONLY",
    "probe_sandbox_is_adventure_state": false,
    "default_runtime_before_selection": "free",
    "safe_free_gate": "runtime_capability_probe_completed = true AND runtime_capability_gate = pass",
    "complete_runtime_gate": "runtime_capability_probe_completed = true AND runtime_capability_gate = no_pass",
    "ambiguous_partial_or_unknown_route": "pass_then_free",
    "selection_write_rule": "Persist runtime_capability_probe_completed, runtime_capability_probe_version, runtime_capability_gate, session_runtime, runtime_selection_lock, normal_runtime_lock, free_session_lock and runtime_selection_reason atomically.",
    "normal_lock_rule": "Once normal_runtime_lock = true, use only normal recovery and never switch to Free spontaneously.",
    "free_lock_rule": "Once free_session_lock = true, remain in Free and never re-run the probe or switch to Normal.",
    "preexisting_session_rule": "If a valid in-progress session already has runtime_selection_lock = true, preserve its selected runtime. If legacy state proves active gameplay but lacks selector fields, preserve its current execution_mode and mark runtime_selection_reason = preexisting_session without restarting creation.",
    "release_condition": "official adventure terminal state only"
  },
  "valores_iniciales_cartas_reveladas": {
    "revealed_card_assets": []
  },
  "valores_iniciales_banderas_dia2": {
    "celdris_visto_en_posada": false,
    "nombre_heldris_descubierto_por_celdris": false,
    "celdris_seguido": false,
    "heldris_visitado_antes_de_tiempo": false,
    "heldris_paquete_recibido": false,
    "heldris_genealogia_confirmada": false,
    "heldris_disponible": false,
    "heldris_contactado_por_iniciativa_del_dalma": false,
    "nota_heldris_activada": false,
    "asher_consultado_sobre_colina": false
  },
  "activaciones_dia2": {
    "heldris_paquete_recibido": "true durante la mañana del Día 2 tras la tercera entrega de Celdris",
    "heldris_genealogia_confirmada": "true a pocas horas de la puesta de sol, después de terminar el estudio",
    "heldris_disponible": "true simultáneamente con heldris_genealogia_confirmada",
    "heldris_contactado_por_iniciativa_del_dalma": "true si el Dalma vuelve a Heldris cuando ya está disponible antes de activarse la nota",
    "nota_heldris_activada": "true solo si la vía directa no ha resuelto el contacto y se cumplen las condiciones del antibloqueo"
  },
  "valores_iniciales_experiencia": {
    "px_inicial": 0,
    "px_ganados_aventura": 0,
    "px_total": 0,
    "eventos_contabilizados": [],
    "resumen_final_mostrado": false,
    "nota": "Para un Dalma nuevo. Si en el futuro se importa un Dalma con experiencia previa, px_inicial y px_total deben partir de su valor canónico existente."
  },
  "reglas_experiencia_sangre_y_poder": {
    "ledger_oculto": true,
    "manual": "Capítulo «Experiencia, niveles y campañas» del manual canónico de Antípodas.",
    "no_doble_recompensa_misma_accion": true,
    "heldris_iniciativa": {
      "xp_event_id": "syP_heldris_iniciativa",
      "px": 1,
      "condicion": "heldris_contactado_por_iniciativa_del_dalma = true AND nota_heldris_activada = false",
      "max_veces": 1
    },
    "aventura_completada": {
      "xp_event_id": "syP_aventura_completada",
      "px": 2,
      "condicion": "Karlein devuelto a Asher / final oficial de éxito",
      "max_veces": 1,
      "precedencia": "Sustituye para este mismo hito la recompensa genérica del manual por superar una aventura completa; no acumular ambas."
    },
    "presentacion": "No manifestar ganancias parciales. Mostrar resumen una sola vez al final, después del epílogo y antes de créditos."
  },
  "catalogo_partidas_ejemplo": {
    "autoridad": "secundaria",
    "regla": "Sólo consultar cuando el canon no resuelva la situación; nunca convierte un precedente en canon."
  },
  "valores_iniciales_desviacion_y_ejemplos": {
    "fuera_linea_canon": false,
    "situaciones_imprevistas": [],
    "ejemplos_partida_consultados": [],
    "pnjs_emergentes": []
  },
  "valores_iniciales_final_alternativo_demonio": {
    "activado": false,
    "demonio_pifia_ocurrida": false,
    "dalma_666_ocurrido": false,
    "proeza_completada": false,
    "botin_obtenido": false
  },
  "valores_iniciales_participacion_postpartida": {
    "resumen_ofrecido": false,
    "pnjs_emergentes_ofrecidos": false,
    "propuesta_preparada": false
  },
  "valores_iniciales_runtime_acumulativo": {
    "CURRENT_DAY": null,
    "CURRENT_TIME": null,
    "CURRENT_TIME_APPROX": null,
    "TIME_OF_DAY": null,
    "ELAPSED_TIME": null,
    "CURRENT_SCENE": null,
    "CURRENT_LOCATION": null,
    "LAST_PLAYER_ACTION": null,
    "LAST_RESOLVED_EVENT": null,
    "STATE": {},
    "REVEALED_STATE": {},
    "XP_LEDGER": [],
    "active_gameplay": true,
    "free_mode": false,
    "free_capsule_id": null,
    "unknown_state_rule": "null != false AND null != 0; never fabricate a value to fill missing history"
  },
  "transiciones_atomicas": {
    "entrega_karlein_asher": {
      "writes": {
        "karlein_control.delivered_to_asher": true,
        "karlein_control.with_dalma": false,
        "STATE.asher_contract_fulfilled": true,
        "STATE.karlein_search_completed": true,
        "STATE.post_scene19_demon_trigger_active": false
      }
    },
    "completar_escena19": {
      "writes": {
        "scene19_control.status": "completed",
        "scene19_control.gruta_climax_completed": true,
        "scene19_control.variant_A_disabled": true,
        "scene19_control.scene19_completion_day": "CURRENT_DAY",
        "scene19_control.scene19_completion_time": "CURRENT_TIME",
        "scene19_control.post_scene19_demon_deadline": "midnight at end of next calendar day"
      }
    }
  },
  "invariantes_runtime_acumulativo": [
    "IF karlein_control.delivered_to_asher THEN karlein_control.with_dalma == false",
    "IF dalma_dead THEN active_gameplay == false",
    "IF adventure_completed THEN no_new_game_scene == true",
    "IF scene19_control.status == completed THEN scene19_control.variant_A_disabled == true",
    "IF demon_control.active AND demon_control.variant IN (B,C) THEN karlein_control.alive == false"
  ]
}
