From 25b0904937444edf73d852c30f5ff2f7d86bb626 Mon Sep 17 00:00:00 2001 From: "marcin p. joachimiak" <4625870+realmarcin@users.noreply.github.com> Date: Tue, 16 Jun 2026 00:36:35 -0700 Subject: [PATCH] Add causal-graph structural-integrity audit + fix 2 orphan nodes LinkML/validate-strict check field types but not graph connectivity. New scripts/audit_causal_graphs.py flags two structural defects the schema can't: DANGLING_EDGE edge subject/object not a declared node_id ORPHAN_NODE declared node referenced by no edge Wired into `just qc` (and thus CI) alongside the other audits; exits non-zero on any defect. Unit-tested (tests/test_audit_causal_graphs.py: clean / orphan / dangling cases). Fixes the 2 orphan nodes the audit surfaced: - physiology/urease_activity.yaml: the trait node (urease_activity_trait) was disconnected; added urease_function -[manifests as / METPO:2007400]-> urease_activity_trait so the molecular function links to the observable trait. - morphology/capsule.yaml: capsular_polysaccharide was orphaned; added capsule_assembly -[produces / biolink:produces]-> capsular_polysaccharide. Both edges carry literature evidence; FIX_ORPHAN_NODE curation events appended. audit-graphs now reports 0 findings. validate-strict 0 errors; full qc passes; 90 tests pass. Pages regenerated. Co-Authored-By: Claude Fable 5 --- data/traits/morphology/capsule.yaml | 16 +++ data/traits/physiology/urease_activity.yaml | 17 ++++ justfile | 8 +- pages/category/ecology.html | 2 +- pages/category/environment.html | 2 +- pages/category/genomics.html | 2 +- pages/category/metabolism.html | 2 +- pages/category/morphology.html | 2 +- pages/category/observation.html | 2 +- pages/category/physiology.html | 2 +- pages/category/quantitative_property.html | 2 +- pages/category/upper.html | 2 +- pages/index.html | 2 +- pages/traits/ecology/animal_pathogen.html | 2 +- pages/traits/ecology/biofilm_formation.html | 2 +- pages/traits/ecology/biosafety_level.html | 2 +- pages/traits/ecology/biosafety_level_1.html | 2 +- pages/traits/ecology/biosafety_level_2.html | 2 +- pages/traits/ecology/biosafety_level_3.html | 2 +- pages/traits/ecology/biosafety_level_4.html | 2 +- pages/traits/ecology/biosafety_level_5.html | 2 +- pages/traits/ecology/commensalism.html | 2 +- pages/traits/ecology/endosymbiosis.html | 2 +- pages/traits/ecology/free_living.html | 2 +- pages/traits/ecology/gut_associated.html | 2 +- pages/traits/ecology/habitat_association.html | 2 +- pages/traits/ecology/host_associated.html | 2 +- pages/traits/ecology/human_pathogen.html | 2 +- pages/traits/ecology/mutualism.html | 2 +- .../ecology/nitrogen_fixing_symbiosis.html | 2 +- .../ecology/opportunistic_pathogen.html | 2 +- pages/traits/ecology/parasitism.html | 2 +- pages/traits/ecology/pathogenic_to_host.html | 2 +- pages/traits/ecology/plant_pathogen.html | 2 +- pages/traits/ecology/predatory_bacterium.html | 2 +- .../ecology/rhizosphere_association.html | 2 +- pages/traits/ecology/saprotrophy.html | 2 +- pages/traits/ecology/soil_dwelling.html | 2 +- pages/traits/ecology/symbiosis.html | 2 +- pages/traits/environment/acidophilic.html | 2 +- pages/traits/environment/acidotolerant.html | 2 +- pages/traits/environment/aerobic.html | 2 +- pages/traits/environment/aerotolerant.html | 2 +- pages/traits/environment/alkalotolerant.html | 2 +- pages/traits/environment/alkaphilic.html | 2 +- pages/traits/environment/anaerobic.html | 2 +- .../traits/environment/arsenic_tolerant.html | 2 +- .../traits/environment/cadmium_tolerant.html | 2 +- pages/traits/environment/cobalt_tolerant.html | 2 +- pages/traits/environment/copper_tolerant.html | 2 +- ...delta_phenotype_with_numerical_limits.html | 2 +- .../environment/desiccation_tolerant.html | 2 +- pages/traits/environment/euryhaline.html | 2 +- .../extreme_hyperthermophilic.html | 2 +- .../environment/extremely_halophilic.html | 2 +- .../facultative_oxygen_preference.html | 2 +- .../facultative_psychrophilic.html | 2 +- .../facultatively_acidophilic.html | 2 +- .../environment/facultatively_aerobic.html | 2 +- .../environment/facultatively_alkaphilic.html | 2 +- .../environment/facultatively_anaerobic.html | 2 +- ...range_phenotype_with_numerical_limits.html | 2 +- .../traits/environment/haloalkaliphilic.html | 2 +- pages/traits/environment/halophilic.html | 2 +- .../environment/halophily_preference.html | 2 +- pages/traits/environment/halotolerant.html | 2 +- .../traits/environment/hyperthermophilic.html | 2 +- .../ionizing_radiation_tolerant.html | 2 +- .../traits/environment/mercury_tolerant.html | 2 +- pages/traits/environment/mesophilic.html | 2 +- pages/traits/environment/metal_tolerant.html | 2 +- pages/traits/environment/microaerophilic.html | 2 +- .../traits/environment/microaerotolerant.html | 2 +- .../environment/moderately_halophilic.html | 2 +- pages/traits/environment/nacl_delta.html | 2 +- pages/traits/environment/nacl_delta_high.html | 2 +- pages/traits/environment/nacl_delta_low.html | 2 +- pages/traits/environment/nacl_delta_mid1.html | 2 +- pages/traits/environment/nacl_delta_mid2.html | 2 +- pages/traits/environment/nacl_optimum.html | 2 +- .../traits/environment/nacl_optimum_high.html | 2 +- .../traits/environment/nacl_optimum_low.html | 2 +- .../traits/environment/nacl_optimum_mid1.html | 2 +- .../traits/environment/nacl_optimum_mid2.html | 2 +- pages/traits/environment/nacl_range.html | 2 +- pages/traits/environment/nacl_range_high.html | 2 +- pages/traits/environment/nacl_range_low.html | 2 +- pages/traits/environment/nacl_range_mid1.html | 2 +- pages/traits/environment/nacl_range_mid2.html | 2 +- pages/traits/environment/neutrophilic.html | 2 +- pages/traits/environment/non_halophilic.html | 2 +- .../environment/obligately_acidophilic.html | 2 +- .../environment/obligately_aerobic.html | 2 +- .../environment/obligately_alkaphilic.html | 2 +- .../environment/obligately_anaerobic.html | 2 +- .../environment/obligately_piezophilic.html | 2 +- ...timum_phenotype_with_numerical_limits.html | 2 +- .../traits/environment/oxygen_preference.html | 2 +- pages/traits/environment/ph_delta.html | 2 +- pages/traits/environment/ph_delta_high.html | 2 +- pages/traits/environment/ph_delta_low.html | 2 +- pages/traits/environment/ph_delta_mid1.html | 2 +- pages/traits/environment/ph_delta_mid2.html | 2 +- pages/traits/environment/ph_delta_mid3.html | 2 +- .../traits/environment/ph_delta_very_low.html | 2 +- .../environment/ph_growth_preference.html | 2 +- pages/traits/environment/ph_optimum.html | 2 +- pages/traits/environment/ph_optimum_high.html | 2 +- pages/traits/environment/ph_optimum_low.html | 2 +- pages/traits/environment/ph_optimum_mid1.html | 2 +- pages/traits/environment/ph_optimum_mid2.html | 2 +- .../ph_phenotype_with_numerical_limits.html | 2 +- pages/traits/environment/ph_range.html | 2 +- pages/traits/environment/ph_range_high.html | 2 +- pages/traits/environment/ph_range_low.html | 2 +- pages/traits/environment/ph_range_mid1.html | 2 +- pages/traits/environment/ph_range_mid2.html | 2 +- pages/traits/environment/ph_range_mid3.html | 2 +- .../traits/environment/ph_range_very_low.html | 2 +- pages/traits/environment/piezophilic.html | 2 +- pages/traits/environment/piezotolerant.html | 2 +- pages/traits/environment/pressure_delta.html | 2 +- .../traits/environment/pressure_optimum.html | 2 +- pages/traits/environment/pressure_range.html | 2 +- pages/traits/environment/psychrophilic.html | 2 +- pages/traits/environment/psychrotolerant.html | 2 +- pages/traits/environment/radiotolerant.html | 2 +- ...inity_phenotype_with_numerical_limits.html | 2 +- .../environment/slightly_halophilic.html | 2 +- pages/traits/environment/stenohaline.html | 2 +- .../environment/strictly_anaerobic.html | 2 +- .../traits/environment/temperature_delta.html | 2 +- .../environment/temperature_delta_high.html | 2 +- .../environment/temperature_delta_low.html | 2 +- .../environment/temperature_delta_mid1.html | 2 +- .../environment/temperature_delta_mid2.html | 2 +- .../temperature_delta_very_low.html | 2 +- .../environment/temperature_optimum.html | 2 +- .../environment/temperature_optimum_high.html | 2 +- .../environment/temperature_optimum_low.html | 2 +- .../environment/temperature_optimum_mid1.html | 2 +- .../environment/temperature_optimum_mid2.html | 2 +- .../environment/temperature_optimum_mid3.html | 2 +- .../environment/temperature_optimum_mid4.html | 2 +- .../temperature_optimum_very_low.html | 2 +- ...ature_phenotype_with_numerical_limits.html | 2 +- .../environment/temperature_preference.html | 2 +- .../traits/environment/temperature_range.html | 2 +- .../environment/temperature_range_high.html | 2 +- .../environment/temperature_range_low.html | 2 +- .../environment/temperature_range_mid1.html | 2 +- .../environment/temperature_range_mid2.html | 2 +- .../environment/temperature_range_mid3.html | 2 +- .../environment/temperature_range_mid4.html | 2 +- .../temperature_range_very_low.html | 2 +- pages/traits/environment/thermophilic.html | 2 +- pages/traits/environment/thermotolerant.html | 2 +- .../environment/uv_radiation_tolerant.html | 2 +- pages/traits/environment/xerophilic.html | 2 +- pages/traits/environment/zinc_tolerant.html | 2 +- pages/traits/genomics/codon_usage_bias.html | 2 +- pages/traits/genomics/crispr_cas_system.html | 2 +- pages/traits/genomics/gc_content.html | 2 +- pages/traits/genomics/gc_high.html | 2 +- pages/traits/genomics/gc_low.html | 2 +- pages/traits/genomics/gc_mid1.html | 2 +- pages/traits/genomics/gc_mid2.html | 2 +- pages/traits/genomics/gc_skew.html | 2 +- pages/traits/genomics/genome_size.html | 2 +- .../traits/genomics/genome_streamlining.html | 2 +- pages/traits/genomics/genomic_island.html | 2 +- .../genomics/mobile_genetic_element.html | 2 +- pages/traits/genomics/pangenome_openness.html | 2 +- pages/traits/genomics/plasmid_carriage.html | 2 +- pages/traits/genomics/ploidy.html | 2 +- pages/traits/genomics/prophage.html | 2 +- .../restriction_modification_system.html | 2 +- .../genomics/rrna_operon_copy_number.html | 2 +- .../traits/genomics/transposable_element.html | 2 +- pages/traits/metabolism/accumulates.html | 2 +- pages/traits/metabolism/acetogenesis.html | 2 +- .../metabolism/aerobic_respiration.html | 2 +- .../anaerobic_oxidation_of_methane.html | 2 +- .../metabolism/anaerobic_respiration.html | 2 +- .../metabolism/anoxygenic_photosynthesis.html | 2 +- pages/traits/metabolism/assimilates.html | 2 +- .../metabolism/biopolymer_degradation.html | 2 +- pages/traits/metabolism/builds_acid_from.html | 2 +- pages/traits/metabolism/builds_base_from.html | 2 +- pages/traits/metabolism/builds_gas_from.html | 2 +- .../metabolism/cable_bacteria_metabolism.html | 2 +- .../calvin_benson_bassham_cycle.html | 2 +- pages/traits/metabolism/capable_of.html | 2 +- pages/traits/metabolism/carbon_fixation.html | 2 +- pages/traits/metabolism/cellulolysis.html | 2 +- pages/traits/metabolism/chitinolysis.html | 2 +- .../traits/metabolism/compartmentalizes.html | 2 +- pages/traits/metabolism/degrades.html | 2 +- pages/traits/metabolism/denitrification.html | 2 +- ...arboxylate_four_hydroxybutyrate_cycle.html | 2 +- .../traits/metabolism/disproportionates.html | 2 +- .../traits/metabolism/disproportionation.html | 2 +- .../dissimilatory_iron_reduction.html | 2 +- .../dissimilatory_manganese_reduction.html | 2 +- .../dissimilatory_metal_reduction.html | 2 +- ...ilatory_nitrate_reduction_to_ammonium.html | 2 +- .../dissimilatory_sulfate_reduction.html | 2 +- .../metabolism/does_not_accumulate.html | 2 +- .../metabolism/does_not_assimilate.html | 2 +- .../metabolism/does_not_build_acid_from.html | 2 +- .../metabolism/does_not_build_base_from.html | 2 +- .../metabolism/does_not_build_gas_from.html | 2 +- .../metabolism/does_not_compartmentalize.html | 2 +- pages/traits/metabolism/does_not_degrade.html | 2 +- .../metabolism/does_not_disproportionate.html | 2 +- pages/traits/metabolism/does_not_export.html | 2 +- pages/traits/metabolism/does_not_ferment.html | 2 +- .../traits/metabolism/does_not_hydrolyze.html | 2 +- pages/traits/metabolism/does_not_import.html | 2 +- pages/traits/metabolism/does_not_oxidize.html | 2 +- pages/traits/metabolism/does_not_produce.html | 2 +- pages/traits/metabolism/does_not_reduce.html | 2 +- .../traits/metabolism/does_not_sequester.html | 2 +- .../metabolism/does_not_show_activity_of.html | 2 +- .../traits/metabolism/does_not_transport.html | 2 +- .../does_not_use_as_carbon_source.html | 2 +- .../does_not_use_as_electron_acceptor.html | 2 +- .../does_not_use_as_electron_donor.html | 2 +- .../does_not_use_as_energy_source.html | 2 +- .../does_not_use_as_nitrogen_source.html | 2 +- .../does_not_use_as_sulfur_source.html | 2 +- ...es_not_use_for_aerobic_catabolization.html | 2 +- .../does_not_use_for_aerobic_growth.html | 2 +- ..._not_use_for_anaerobic_catabolization.html | 2 +- .../does_not_use_for_anaerobic_growth.html | 2 +- ..._use_for_anaerobic_growth_in_the_dark.html | 2 +- ...t_use_for_anaerobic_growth_with_light.html | 2 +- .../metabolism/does_not_use_for_growth.html | 2 +- .../does_not_use_for_respiration.html | 2 +- .../metabolism/does_not_use_in_other_way.html | 2 +- .../traits/metabolism/electron_transfer.html | 2 +- .../metabolism/enzyme_activity_analyzed.html | 2 +- .../metabolism/ethanol_fermentation.html | 2 +- pages/traits/metabolism/exports.html | 2 +- pages/traits/metabolism/fermentation.html | 2 +- .../fermentative_hydrogen_production.html | 2 +- pages/traits/metabolism/ferments.html | 2 +- .../has_growth_nacl_observation.html | 2 +- .../has_growth_oxygen_observation.html | 2 +- .../metabolism/has_growth_ph_observation.html | 2 +- .../has_growth_temperature_observation.html | 2 +- .../has_nacl_delta_observation.html | 2 +- .../metabolism/has_nacl_observation.html | 2 +- pages/traits/metabolism/has_observation.html | 2 +- .../has_optimum_nacl_observation.html | 2 +- .../has_optimum_oxygen_observation.html | 2 +- .../has_optimum_ph_observation.html | 2 +- .../has_optimum_temperature_observation.html | 2 +- .../has_oxygen_delta_observation.html | 2 +- .../metabolism/has_oxygen_observation.html | 2 +- .../metabolism/has_ph_delta_observation.html | 2 +- .../traits/metabolism/has_ph_observation.html | 2 +- pages/traits/metabolism/has_phenotype.html | 2 +- pages/traits/metabolism/has_quality.html | 2 +- .../has_range_nacl_observation.html | 2 +- .../has_range_oxygen_observation.html | 2 +- .../metabolism/has_range_ph_observation.html | 2 +- .../has_range_temperature_observation.html | 2 +- .../has_temperature_delta_observation.html | 2 +- .../has_temperature_observation.html | 2 +- pages/traits/metabolism/homoacetogenesis.html | 2 +- pages/traits/metabolism/hydrolyzes.html | 2 +- pages/traits/metabolism/imports.html | 2 +- pages/traits/metabolism/iron_oxidation.html | 2 +- .../is_not_required_for_growth.html | 2 +- .../metabolism/lactic_acid_fermentation.html | 2 +- .../traits/metabolism/lignin_degradation.html | 2 +- .../metabolism/manganese_oxidation.html | 2 +- pages/traits/metabolism/metabolism.html | 2 +- pages/traits/metabolism/methanogenesis.html | 2 +- .../metabolism/mixed_acid_fermentation.html | 2 +- .../traits/metabolism/nitrogen_fixation.html | 2 +- .../organism_interacts_with_chemical.html | 2 +- .../metabolism/oxidative_phosphorylation.html | 2 +- pages/traits/metabolism/oxidizes.html | 2 +- .../metabolism/oxygenic_photosynthesis.html | 2 +- pages/traits/metabolism/photosynthesis.html | 2 +- pages/traits/metabolism/phototrophy.html | 2 +- pages/traits/metabolism/produces.html | 2 +- .../propionic_acid_fermentation.html | 2 +- pages/traits/metabolism/proteolysis.html | 2 +- .../proteorhodopsin_phototrophy.html | 2 +- pages/traits/metabolism/reduces.html | 2 +- .../metabolism/reductive_tca_cycle.html | 2 +- .../metabolism/requires_for_growth.html | 2 +- pages/traits/metabolism/respiration.html | 2 +- pages/traits/metabolism/sequesters.html | 2 +- .../traits/metabolism/shows_activity_of.html | 2 +- .../traits/metabolism/starch_degradation.html | 2 +- .../substrate_level_phosphorylation.html | 2 +- pages/traits/metabolism/sulfur_oxidation.html | 2 +- pages/traits/metabolism/syntrophy.html | 2 +- .../three_hydroxypropionate_bicycle.html | 2 +- ...propionate_four_hydroxybutyrate_cycle.html | 2 +- pages/traits/metabolism/transports.html | 2 +- .../metabolism/uses_as_carbon_source.html | 2 +- .../metabolism/uses_as_electron_acceptor.html | 2 +- .../metabolism/uses_as_electron_donor.html | 2 +- .../metabolism/uses_as_energy_source.html | 2 +- .../metabolism/uses_as_nitrogen_source.html | 2 +- .../metabolism/uses_as_sulfur_source.html | 2 +- .../uses_for_aerobic_catabolization.html | 2 +- .../metabolism/uses_for_aerobic_growth.html | 2 +- .../uses_for_anaerobic_catabolization.html | 2 +- .../metabolism/uses_for_anaerobic_growth.html | 2 +- ...uses_for_anaerobic_growth_in_the_dark.html | 2 +- .../uses_for_anaerobic_growth_with_light.html | 2 +- pages/traits/metabolism/uses_for_growth.html | 2 +- .../metabolism/uses_for_respiration.html | 2 +- .../traits/metabolism/uses_in_other_way.html | 2 +- .../metabolism/wood_ljungdahl_pathway.html | 2 +- .../traits/metabolism/xylan_degradation.html | 2 +- pages/traits/morphology/amphitrichous.html | 2 +- .../traits/morphology/axially_filamented.html | 2 +- pages/traits/morphology/bacillus_shaped.html | 2 +- pages/traits/morphology/black_pigmented.html | 2 +- pages/traits/morphology/branched_shaped.html | 2 +- pages/traits/morphology/brown_pigmented.html | 2 +- pages/traits/morphology/capsule.html | 29 +++++- pages/traits/morphology/carboxysome.html | 2 +- .../morphology/carotenoid_pigmentation.html | 2 +- pages/traits/morphology/cell_length.html | 2 +- .../traits/morphology/cell_length_large.html | 2 +- .../traits/morphology/cell_length_medium.html | 2 +- .../traits/morphology/cell_length_small.html | 2 +- .../morphology/cell_length_very_small.html | 2 +- pages/traits/morphology/cell_shape.html | 2 +- pages/traits/morphology/cell_width.html | 2 +- pages/traits/morphology/cell_width_large.html | 2 +- .../traits/morphology/cell_width_medium.html | 2 +- pages/traits/morphology/cell_width_small.html | 2 +- .../morphology/cell_width_very_small.html | 2 +- .../morphology/coccobacillus_shaped.html | 2 +- pages/traits/morphology/coccus_shaped.html | 2 +- pages/traits/morphology/cream_pigmented.html | 2 +- pages/traits/morphology/crescent_shaped.html | 2 +- pages/traits/morphology/curved_shaped.html | 2 +- .../traits/morphology/diplococcus_shaped.html | 2 +- pages/traits/morphology/disc_shaped.html | 2 +- pages/traits/morphology/dumbbell_shaped.html | 2 +- pages/traits/morphology/ellipsoidal.html | 2 +- pages/traits/morphology/filament_shaped.html | 2 +- .../morphology/flagellar_arrangement.html | 2 +- pages/traits/morphology/flagellated.html | 2 +- pages/traits/morphology/flask_shaped.html | 2 +- pages/traits/morphology/fusiform_shaped.html | 2 +- pages/traits/morphology/gas_vesicle.html | 2 +- pages/traits/morphology/gliding.html | 2 +- pages/traits/morphology/gram_negative.html | 2 +- pages/traits/morphology/gram_positive.html | 2 +- pages/traits/morphology/gram_stain.html | 2 +- pages/traits/morphology/gram_variable.html | 2 +- pages/traits/morphology/green_pigmented.html | 2 +- pages/traits/morphology/helical_shaped.html | 2 +- pages/traits/morphology/heterocyst.html | 2 +- .../morphology/intracellular_inclusion.html | 2 +- pages/traits/morphology/irregular_shaped.html | 2 +- pages/traits/morphology/lophotrichous.html | 2 +- pages/traits/morphology/magnetosome.html | 2 +- pages/traits/morphology/monotrichous.html | 2 +- pages/traits/morphology/motile.html | 2 +- pages/traits/morphology/motility.html | 2 +- pages/traits/morphology/mycelial_growth.html | 2 +- pages/traits/morphology/non_motile.html | 2 +- .../traits/morphology/non_spore_forming.html | 2 +- pages/traits/morphology/orange_pigmented.html | 2 +- pages/traits/morphology/oval_shaped.html | 2 +- pages/traits/morphology/ovoid_shaped.html | 2 +- pages/traits/morphology/peritrichous.html | 2 +- pages/traits/morphology/pigmentation.html | 2 +- pages/traits/morphology/pink_pigmented.html | 2 +- .../traits/morphology/pleomorphic_shaped.html | 2 +- .../polyhydroxyalkanoate_granule.html | 2 +- .../morphology/polyphosphate_granule.html | 2 +- pages/traits/morphology/prosthecate.html | 2 +- pages/traits/morphology/red_pigmented.html | 2 +- pages/traits/morphology/ring_shaped.html | 2 +- pages/traits/morphology/rod_shaped.html | 2 +- pages/traits/morphology/s_layer.html | 2 +- .../morphology/sarcina_arrangement.html | 2 +- pages/traits/morphology/sphere_shaped.html | 2 +- pages/traits/morphology/spindle_shaped.html | 2 +- pages/traits/morphology/spiral_shaped.html | 2 +- .../traits/morphology/spirochete_shaped.html | 2 +- pages/traits/morphology/spore_forming.html | 2 +- pages/traits/morphology/spore_shaped.html | 2 +- pages/traits/morphology/sporulation.html | 2 +- pages/traits/morphology/square_shaped.html | 2 +- .../staphylococcus_arrangement.html | 2 +- pages/traits/morphology/star_shaped.html | 2 +- .../morphology/streptococcus_arrangement.html | 2 +- pages/traits/morphology/sulfur_globule.html | 2 +- .../traits/morphology/swarming_motility.html | 2 +- pages/traits/morphology/tailed_shaped.html | 2 +- .../traits/morphology/tetrad_arrangement.html | 2 +- .../traits/morphology/triangular_shaped.html | 2 +- .../traits/morphology/twitching_motility.html | 2 +- pages/traits/morphology/vibrio_shaped.html | 2 +- pages/traits/morphology/white_pigmented.html | 2 +- pages/traits/morphology/yellow_pigmented.html | 2 +- .../observation/growth_nacl_observation.html | 2 +- .../growth_oxygen_observation.html | 2 +- .../observation/growth_ph_observation.html | 2 +- .../growth_temperature_observation.html | 2 +- .../observation/nacl_delta_observation.html | 2 +- .../traits/observation/nacl_observation.html | 2 +- .../observation/nacl_range_observation.html | 2 +- .../observation/optimum_nacl_observation.html | 2 +- .../optimum_oxygen_observation.html | 2 +- .../observation/optimum_ph_observation.html | 2 +- .../optimum_temperature_observation.html | 2 +- .../observation/oxygen_delta_observation.html | 2 +- .../observation/oxygen_observation.html | 2 +- .../observation/oxygen_range_observation.html | 2 +- .../observation/ph_delta_observation.html | 2 +- pages/traits/observation/ph_observation.html | 2 +- .../observation/ph_range_observation.html | 2 +- .../temperature_delta_observation.html | 2 +- .../observation/temperature_observation.html | 2 +- .../temperature_range_observation.html | 2 +- .../physiology/antibiotic_resistance.html | 2 +- pages/traits/physiology/autotrophic.html | 2 +- pages/traits/physiology/bioluminescence.html | 2 +- pages/traits/physiology/carboxydotrophic.html | 2 +- .../traits/physiology/catalase_activity.html | 2 +- .../physiology/chemoautolithotrophic.html | 2 +- pages/traits/physiology/chemoautotrophic.html | 2 +- .../traits/physiology/chemoheterotrophic.html | 2 +- .../physiology/chemolithoautotrophic.html | 2 +- .../physiology/chemolithoheterotrophic.html | 2 +- .../traits/physiology/chemolithotrophic.html | 2 +- .../physiology/chemoorganoheterotrophic.html | 2 +- .../traits/physiology/chemoorganotrophic.html | 2 +- pages/traits/physiology/chemotaxis.html | 2 +- pages/traits/physiology/chemotrophic.html | 2 +- pages/traits/physiology/copiotrophic.html | 2 +- pages/traits/physiology/dormancy.html | 2 +- pages/traits/physiology/heterotrophic.html | 2 +- pages/traits/physiology/hydrogenotrophic.html | 2 +- pages/traits/physiology/lithoautotrophic.html | 2 +- .../traits/physiology/lithoheterotrophic.html | 2 +- pages/traits/physiology/lithotrophic.html | 2 +- pages/traits/physiology/methanotrophic.html | 2 +- pages/traits/physiology/methylotrophic.html | 2 +- pages/traits/physiology/mixotrophic.html | 2 +- .../traits/physiology/natural_competence.html | 2 +- .../physiology/nutrient_adaptation.html | 2 +- pages/traits/physiology/oligotrophic.html | 2 +- .../physiology/organoheterotrophic.html | 2 +- pages/traits/physiology/organotrophic.html | 2 +- pages/traits/physiology/oxidase_activity.html | 2 +- .../physiology/oxidative_stress_response.html | 2 +- .../physiology/persister_cell_formation.html | 2 +- pages/traits/physiology/photoautotrophic.html | 2 +- .../traits/physiology/photoheterotrophic.html | 2 +- .../physiology/photolithoautotrophic.html | 2 +- .../traits/physiology/photolithotrophic.html | 2 +- .../physiology/photoorganoheterotrophic.html | 2 +- pages/traits/physiology/phototrophic.html | 2 +- pages/traits/physiology/quorum_sensing.html | 2 +- .../traits/physiology/spore_germination.html | 2 +- pages/traits/physiology/stress_response.html | 2 +- pages/traits/physiology/trophic_type.html | 2 +- pages/traits/physiology/urease_activity.html | 27 ++++- .../viable_but_nonculturable_state.html | 2 +- .../has_maximum_observed_value.html | 2 +- .../has_minimum_observed_value.html | 2 +- .../has_observed_spot_value.html | 2 +- .../quantitative_property/has_value.html | 2 +- .../has_value_comments.html | 2 +- .../is_negative_data.html | 2 +- .../observation_data_property.html | 2 +- pages/traits/upper/biological_process.html | 2 +- pages/traits/upper/chemical_entity.html | 2 +- pages/traits/upper/enzyme.html | 2 +- pages/traits/upper/material_entity.html | 2 +- pages/traits/upper/microbe.html | 2 +- pages/traits/upper/observation.html | 2 +- pages/traits/upper/phenotype.html | 2 +- pages/traits/upper/quality.html | 2 +- pages/umap.html | 2 +- reports/causal_graph_audit.tsv | 1 + scripts/audit_causal_graphs.py | 98 +++++++++++++++++++ tests/test_audit_causal_graphs.py | 82 ++++++++++++++++ 494 files changed, 758 insertions(+), 492 deletions(-) create mode 100644 reports/causal_graph_audit.tsv create mode 100644 scripts/audit_causal_graphs.py create mode 100644 tests/test_audit_causal_graphs.py diff --git a/data/traits/morphology/capsule.yaml b/data/traits/morphology/capsule.yaml index be4f5b01..a6df4117 100644 --- a/data/traits/morphology/capsule.yaml +++ b/data/traits/morphology/capsule.yaml @@ -50,6 +50,16 @@ causal_graphs: node_type: QUALITY description: Reduced recognition and clearance by host innate immunity. edges: + - subject: capsule_assembly + predicate: produces + object: capsular_polysaccharide + description: Capsule biosynthesis synthesizes and exports the high-MW capsular + polysaccharide. + evidence: + - reference: DOI:10.1146/annurev.biochem.75.103004.142545 + notes: Whitfield reviews biosynthesis, export, and surface assembly of the + capsular polysaccharide polymer. + predicate_id: biolink:produces - subject: capsule_assembly predicate: enables object: capsule_trait @@ -86,3 +96,9 @@ curation_history: changes: Grounded 1 causal-node grounding field(s) via mappings/node_grounding.tsv (CHEBI:3379×1). llm_assisted: true +- timestamp: '2026-06-16T00:00:00Z' + curator: claude + action: FIX_ORPHAN_NODE + changes: Connected the previously-orphaned capsular_polysaccharide node via a + 'produces' (biolink:produces) edge from capsule_assembly. + llm_assisted: true diff --git a/data/traits/physiology/urease_activity.yaml b/data/traits/physiology/urease_activity.yaml index c83c9e15..0c862fd1 100644 --- a/data/traits/physiology/urease_activity.yaml +++ b/data/traits/physiology/urease_activity.yaml @@ -75,6 +75,16 @@ causal_graphs: - reference: DOI:10.1128/mr.53.1.85-108.1989 notes: Mobley & Hausinger support ammonia release from urea hydrolysis. predicate_id: METPO:2000202 + - subject: urease_function + predicate: manifests as + object: urease_activity_trait + description: Urease enzymatic activity manifests as the observable urease-activity + phenotype scored by the diagnostic urease test. + evidence: + - reference: DOI:10.1128/mr.59.3.451-480.1995 + notes: Urease activity (urea-to-ammonia hydrolysis raising local pH) is the + assayable phenotype used to score urease-positive organisms. + predicate_id: METPO:2007400 curation_history: - timestamp: '2026-06-04T00:00:00Z' curator: claude @@ -95,3 +105,10 @@ curation_history: changes: Grounded 1 causal-node grounding field(s) via mappings/node_grounding.tsv (UniProtKB:A0A090IGX8×1). llm_assisted: true +- timestamp: '2026-06-16T00:00:00Z' + curator: claude + action: FIX_ORPHAN_NODE + changes: Connected the previously-orphaned urease_activity_trait node via a + 'manifests as' (METPO:2007400) edge from urease_function, so the molecular + function links to the observable trait. + llm_assisted: true diff --git a/justfile b/justfile index 74af2b06..1c0478f6 100644 --- a/justfile +++ b/justfile @@ -48,6 +48,12 @@ audit-writers *args: audit-proposals *args: uv run python scripts/audit_proposals.py {{args}} +# Structural-integrity audit of causal graphs: flag dangling edges (subject/ +# object not a declared node) and orphan nodes (declared but unreferenced). +# Emits reports/causal_graph_audit.tsv; exits 1 on any defect. +audit-graphs *args: + uv run python scripts/audit_causal_graphs.py {{args}} + # Verify a METPO ROBOT-template proposal cohort under proposals/. # Runs column-count, header, parent integrity, subset tag, and scope-A/C # coverage checks. See .claude/skills/metpo-proposal/SKILL.md. @@ -170,7 +176,7 @@ check: lint test # Composite QC: strict closed-schema validation + schema-quality probes + # writers audit + proposal citation bar. Mirrors the qc target in # MediaIngredientMech / CultureMech. -qc: validate-strict audit-schema audit-writers audit-proposals +qc: validate-strict audit-schema audit-writers audit-proposals audit-graphs # --- id↔label correspondence gate (vendored byte-identical across the Mech repos) --- diff --git a/pages/category/ecology.html b/pages/category/ecology.html index da2a6c75..7da34897 100644 --- a/pages/category/ecology.html +++ b/pages/category/ecology.html @@ -244,7 +244,7 @@

ECOLOGY (26)