name: narada version: "1.0.0" description: > Narada: LLM agent navigates a 55,000-node gene-disease knowledge graph (ClinVar + HPO) to diagnose rare disease patients. The agent must cross-reference patient phenotypes against candidate variants, follow causal chains across the graph, and resist high-pathogenicity decoy variants unrelated to the patient's phenotype. Three task tiers: monogenic (easy), oligogenic (medium), phenotype_mismatch (hard). Adversarial curriculum generation is documented as future work, not part of the current scored environment. author: KrishVenky license: MIT sdk: docker tags: - openenv - rare-disease - genomics - graph-navigation - rl - llm-agent - robustness python_package: src/envs/narada entry_point: narada.server.app:app hardware: cpu-basic space_url: "https://krishvenky-narada-env.hf.space" env: PORT: "7860" HOST: "0.0.0.0" WORKERS: "1" tasks: - id: monogenic difficulty: easy max_steps: 15 description: > Single causal pathogenic variant. 3-4 HPO phenotype terms. Graph path is 4-8 hops. Minimal distractors. Tests basic directional reasoning: follow phenotype → disease → gene → variant chain. grader: signed_raw_reward mapped to OpenEnv score; correct_flag + timing_bonus + overseer_score reward_range: [0.01, 0.99] - id: oligogenic difficulty: medium max_steps: 25 description: > 2 contributing variants, one per gene, across different genes. 5-7 phenotype terms spanning two organ systems. Agent must find all variants within the step budget. Tests multi-objective tracking across long trajectories and holding multiple simultaneous hypotheses. grader: signed_raw_reward mapped to OpenEnv score; partial_credit_per_variant + timing_bonus + overseer_score reward_range: [0.01, 0.99] - id: phenotype_mismatch difficulty: hard max_steps: 20 description: > A high-pathogenicity BRCA1/BRCA2/TP53 frameshift variant is in the candidate pool as a deliberate decoy. The patient's phenotypes are entirely cardiac or neurological. The actual causal variant is a lower-pathogenicity gene specific to the presenting phenotype. Tests causal discipline: resist the highest-salience signal when it is phenotypically irrelevant. Most untrained LLMs fail this task. grader: signed_raw_reward mapped to OpenEnv score; cardiac_flag * 1.0 - decoy_flag * 0.5 + overseer_score reward_range: [0.01, 0.99] observation_space: type: object fields: step: integer max_steps: integer task_type: string current_node: GraphNode trail: list[GraphNode] patient_phenotypes: list[string] phenotype_names: list[string] phenotypes_absent: list[string] phenotype_absent_names: list[string] candidate_variants: list[Variant] step_reward: float cumulative_reward: float done: boolean info: object action_space: type: object fields: action_type: string node_id: string variant_id: string test_type: string reasoning: string constraints: - "action_type in [hop, flag_causal, backtrack, request_lab, summarise_trail]" - "node_id required when action_type=hop" - "variant_id required when action_type=flag_causal"