"""Additive NoNE science-specialist catalog. These families are appended after the accepted v18 catalog. Their order is a checkpoint contract: existing capability rows and paged-family identities must remain an exact prefix when this catalog grows. ``routing_claims`` permit relevant evidence to route toward a specialist. ``readiness_claims`` are stricter corpus labels required before the growth plan may report direct evidence readiness for that specialist. Registration and transfer initialization never imply that a specialist has been trained. """ from __future__ import annotations import hashlib from dataclasses import dataclass from typing import Final NONE_SCIENCE_SPECIALIST_CATALOG_SCHEMA: Final = ( "nnf.resynthesis.none_science_specialist_catalog.v1" ) MHC_CHEMICAL_PLAUSIBILITY: Final = ( "mhc_chemical_plausibility_completeness" ) MHC_ROUTE_DISTANCE: Final = "mhc_literature_route_distance" MHC_STARTING_MATERIAL: Final = "mhc_starting_material_practicality" MHC_STEP_CONVERGENCE: Final = "mhc_step_count_route_convergence" MHC_SAFETY_PROCESS: Final = "mhc_safety_process_compatibility" MHC_SCALE_IMPURITY: Final = "mhc_scalability_impurity_burden" MHC_EVIDENCE_UNCERTAINTY: Final = "mhc_evidence_quality_uncertainty" MHC_LAB_MERIT: Final = "mhc_lab_investigation_merit" NONE_SCIENCE_SPECIALIST_RUBRIC_FACTORS: Final = frozenset( { MHC_CHEMICAL_PLAUSIBILITY, MHC_ROUTE_DISTANCE, MHC_STARTING_MATERIAL, MHC_STEP_CONVERGENCE, MHC_SAFETY_PROCESS, MHC_SCALE_IMPURITY, MHC_EVIDENCE_UNCERTAINTY, MHC_LAB_MERIT, } ) @dataclass(frozen=True) class NoNERouteInvestigationRubricFactor: """One evidence-scored, post-forward route-investigation criterion.""" factor_id: str label: str required_evidence: tuple[str, ...] score_anchors: tuple[str, str, str, str, str] critical_for_laboratory_merit: bool NONE_ROUTE_INVESTIGATION_RUBRIC_FACTORS: Final[ tuple[NoNERouteInvestigationRubricFactor, ...] ] = ( NoNERouteInvestigationRubricFactor( MHC_CHEMICAL_PLAUSIBILITY, "chemical plausibility and completeness", ( "identity, structure, salt or parent form, stereochemistry, and charge", "atom, valence, mass-balance, reagent, condition, and transformation checks", "competing chemistry, selectivity, and unresolved molecular assumptions", ), ( "chemically invalid, internally contradictory, or too incomplete to assess", "identity is partly resolved but the proposed chemistry has major unsupported gaps", "the transformation is plausible with explicit unresolved identity or reaction details", "the complete chemistry is supported and important competing pathways are addressed", "quantitative, independently corroborated chemistry survives edge-case analysis", ), True, ), NoNERouteInvestigationRubricFactor( MHC_ROUTE_DISTANCE, "distance from the standard literature route", ( "a provenance-bound nearest literature or patent comparator", "structural, transformation, reagent, condition, and sequence deltas", "novelty limits, hidden dependencies, and comparator-search uncertainty", ), ( "no defensible standard-route comparator was identified", "a comparator is asserted without enough primary-source route detail", "the nearest precedent is identified but important route deltas remain unresolved", "stepwise route distance is evidenced with explicit novelty limitations", "a systematic prior-art comparison quantifies route distance and residual uncertainty", ), False, ), NoNERouteInvestigationRubricFactor( MHC_STARTING_MATERIAL, "starting-material practicality", ( "exact starting-material identity, form, purity, stability, and storage needs", "commercial or preparative availability, cost, scale, suppliers, and regions", "protecting-group, upstream synthesis, quality, and supply-chain burden", ), ( "starting materials are undefined, implausible, or unavailable", "identities are known but availability, quality, or preparation is unsupported", "materials appear obtainable with substantial unresolved cost, stability, or supply risk", "scale-appropriate supply or a validated preparation is supported with known constraints", "quality, cost, regional resilience, and upstream dependencies are quantitatively controlled", ), False, ), NoNERouteInvestigationRubricFactor( MHC_STEP_CONVERGENCE, "step count and route convergence", ( "complete step inventory, longest linear sequence, and branch convergence", "isolated or telescoped yields, selectivity, recycle, and material-flow assumptions", "bottleneck steps, hidden operations, protecting groups, and route alternatives", ), ( "the route is not sufficiently enumerated to count or compare", "only fragments or a single reaction record are available", "a nominal route is present but yields, branches, or hidden operations are incomplete", "total and longest-linear steps, convergence, and material flow are supported", "bottlenecks and alternative convergent designs are quantitatively compared", ), False, ), NoNERouteInvestigationRubricFactor( MHC_SAFETY_PROCESS, "safety and process compatibility", ( "reagent, solvent, intermediate, product, and waste hazards", "thermal, pressure, gas, mixing, incompatibility, and containment evidence", "safe operating envelope, controls, emergency response, and scale dependence", ), ( "material safety evidence is absent, contradictory, or indicates an uncontrolled hazard", "generic hazards are named without reaction- or process-specific analysis", "major hazards are recognized but thermal, incompatibility, or containment gaps remain", "process-specific hazards and controls support a bounded safe experiment", "a scale-relevant safe operating envelope and failure response are quantitatively supported", ), True, ), NoNERouteInvestigationRubricFactor( MHC_SCALE_IMPURITY, "scalability and likely impurity burden", ( "mixing, heat and mass transfer, dosing, workup, isolation, and equipment constraints", "impurity formation, fate, purge, carryover, specifications, and analytical detection", "scale evidence, expected variability, control strategy, and unresolved process risks", ), ( "no credible scale or impurity assessment is possible", "bench outcome is reported without process or impurity evidence", "scale-up appears plausible but major workup, transport, or impurity risks remain", "unit operations and impurity fate are supported by an executable control strategy", "demonstrated or quantitatively modeled scale behavior includes variability and purge proof", ), False, ), NoNERouteInvestigationRubricFactor( MHC_EVIDENCE_UNCERTAINTY, "evidence quality and explicit uncertainty", ( "primary-source locators, exact entity applicability, and independent corroboration", "contradictions, negative results, temporal leakage, and source dependence", "calibrated confidence, unknowns, assumptions, and evidence needed to resolve them", ), ( "claims are invented, untraceable, contradicted, or presented without uncertainty", "a weak or single source is used without adequate applicability checks", "primary evidence and caveats exist but important contradictions or gaps remain", "multiple relevant sources support the claim with calibrated explicit uncertainty", "prospective or replicated evidence resolves conflicts and validates calibration", ), True, ), NoNERouteInvestigationRubricFactor( MHC_LAB_MERIT, "whether the proposal merits laboratory investigation", ( "a falsifiable hypothesis, smallest safe experiment, controls, and replicates", "measurable endpoints, analytics, success criteria, and stop or go decisions", "information gain, resources, failure modes, staged escalation, and feedback capture", ), ( "the proposal is unsafe, non-falsifiable, or cannot produce interpretable evidence", "the idea is speculative and blocked by prerequisite identity, safety, or evidence gaps", "a testable proposal exists but prerequisite evidence or controls must be completed first", "a bounded experiment with controls, endpoints, and stop or go criteria merits review", "a staged high-information plan is investigation-ready with explicit failure handling", ), True, ), ) NONE_ROUTE_INVESTIGATION_RUBRIC_FACTOR_ORDER: Final = tuple( factor.factor_id for factor in NONE_ROUTE_INVESTIGATION_RUBRIC_FACTORS ) NONE_ROUTE_INVESTIGATION_CRITICAL_FACTORS: Final = tuple( factor.factor_id for factor in NONE_ROUTE_INVESTIGATION_RUBRIC_FACTORS if factor.critical_for_laboratory_merit ) @dataclass(frozen=True) class NoNEScienceSpecialistDefinition: """One append-only science-specialist family contract.""" family_id: str description: str routing_claims: frozenset[str] readiness_claims: frozenset[str] rubric_factors: tuple[str, ...] NONE_V2_PLUS_SCIENCE_SPECIALIST_DEFINITIONS: Final[ tuple[NoNEScienceSpecialistDefinition, ...] ] = ( NoNEScienceSpecialistDefinition( "chemical_entity_resolution_registry_graph", "cross-registry chemical entity resolution, public registry assertions, salt and parent linkage", frozenset({"cas_assertions", "names", "structures"}), frozenset({"registry_crosswalks"}), (MHC_CHEMICAL_PLAUSIBILITY, MHC_EVIDENCE_UNCERTAINTY), ), NoNEScienceSpecialistDefinition( "tautomer_protomer_stereoisomer_ensemble", "tautomer, protomer, stereoisomer, protonation-state, and microstate enumeration", frozenset({"properties", "stereochemistry", "structures"}), frozenset({"molecular_microstates"}), (MHC_CHEMICAL_PLAUSIBILITY, MHC_LAB_MERIT), ), NoNEScienceSpecialistDefinition( "salt_solvate_polymorph_solid_state", "salts, solvates, polymorphs, crystal packing, and solid-state form selection", frozenset({"properties", "spectra", "structures"}), frozenset({"solid_state_forms"}), ( MHC_CHEMICAL_PLAUSIBILITY, MHC_STARTING_MATERIAL, MHC_SCALE_IMPURITY, ), ), NoNEScienceSpecialistDefinition( "thermodynamics_phase_equilibrium", "thermophysical properties, phase equilibria, activity coefficients, and solubility thermodynamics", frozenset({"conditions", "properties", "structures"}), frozenset({"thermophysical_measurements"}), (MHC_CHEMICAL_PLAUSIBILITY, MHC_SAFETY_PROCESS), ), NoNEScienceSpecialistDefinition( "quantum_electronic_reactivity", "electronic structure, charge, orbital, reactivity, and quantum-chemical evidence", frozenset({"properties", "spectra", "structures"}), frozenset({"quantum_chemistry"}), (MHC_CHEMICAL_PLAUSIBILITY, MHC_LAB_MERIT), ), NoNEScienceSpecialistDefinition( "reaction_mechanism_transition_state", "elementary mechanisms, transition states, selectivity origins, and competing reaction pathways", frozenset({"conditions", "procedures", "reaction_records", "yields"}), frozenset({"reaction_mechanisms"}), ( MHC_CHEMICAL_PLAUSIBILITY, MHC_ROUTE_DISTANCE, MHC_STEP_CONVERGENCE, ), ), NoNEScienceSpecialistDefinition( "catalysis_ligand_organometallic", "homogeneous and heterogeneous catalysis, ligand effects, organometallics, and coordination chemistry", frozenset({"catalysts", "conditions", "reaction_records", "yields"}), frozenset({"catalyst_characterization"}), ( MHC_CHEMICAL_PLAUSIBILITY, MHC_STEP_CONVERGENCE, MHC_SAFETY_PROCESS, ), ), NoNEScienceSpecialistDefinition( "enzyme_biocatalysis_metabolic_transform", "enzyme catalysis, metabolic transformations, biocatalytic conditions, and sequence-function transfer", frozenset({"bioactivity", "omics", "reaction_records", "targets"}), frozenset({"enzyme_transformations"}), ( MHC_CHEMICAL_PLAUSIBILITY, MHC_STEP_CONVERGENCE, MHC_LAB_MERIT, ), ), NoNEScienceSpecialistDefinition( "natural_product_biosynthesis", "natural-product structures, biosynthetic pathways, dereplication, and analog generation", frozenset({"literature_full_text", "omics", "structures"}), frozenset({"natural_product_biosynthesis"}), (MHC_CHEMICAL_PLAUSIBILITY, MHC_ROUTE_DISTANCE), ), NoNEScienceSpecialistDefinition( "carbohydrate_glycan_chemistry", "carbohydrate stereochemistry, glycans, glycosylation, and carbohydrate-recognition biology", frozenset({"bioactivity", "structures", "targets"}), frozenset({"glycan_structures"}), (MHC_CHEMICAL_PLAUSIBILITY, MHC_LAB_MERIT), ), NoNEScienceSpecialistDefinition( "lipid_membrane_pharmacology", "lipids, membrane composition, permeability, membrane targets, and lipid pharmacology", frozenset({"bioactivity", "properties", "structures", "targets"}), frozenset({"lipid_membrane_assays"}), ( MHC_CHEMICAL_PLAUSIBILITY, MHC_SAFETY_PROCESS, MHC_LAB_MERIT, ), ), NoNEScienceSpecialistDefinition( "nucleic_acid_oligonucleotide_therapeutics", "DNA/RNA structure, oligonucleotide design, chemical modifications, delivery, and target engagement", frozenset({"clinical", "omics", "structures", "targets"}), frozenset({"oligonucleotide_therapeutics"}), ( MHC_CHEMICAL_PLAUSIBILITY, MHC_SAFETY_PROCESS, MHC_LAB_MERIT, ), ), NoNEScienceSpecialistDefinition( "covalent_warhead_reactivity", "covalent binders, electrophile tuning, residue selectivity, reactivity liabilities, and kinetics", frozenset({"bioactivity", "kinetics", "structures", "targets"}), frozenset({"covalent_binding_assays"}), ( MHC_CHEMICAL_PLAUSIBILITY, MHC_SAFETY_PROCESS, MHC_LAB_MERIT, ), ), NoNEScienceSpecialistDefinition( "radiochemistry_isotope_pharmacology", "radioisotopes, radiolabeling, dosimetry, isotope stability, and radiopharmaceutical design", frozenset({"clinical", "conditions", "hazards", "structures"}), frozenset({"radiochemistry"}), ( MHC_CHEMICAL_PLAUSIBILITY, MHC_SAFETY_PROCESS, MHC_LAB_MERIT, ), ), NoNEScienceSpecialistDefinition( "solubility_permeability_transport", "aqueous solubility, permeability, transporters, ionization, and absorption constraints", frozenset({"admet", "bioactivity", "properties", "structures"}), frozenset({"solubility_permeability"}), ( MHC_CHEMICAL_PLAUSIBILITY, MHC_SAFETY_PROCESS, MHC_LAB_MERIT, ), ), NoNEScienceSpecialistDefinition( "pkpd_dose_exposure", "pharmacokinetics, pharmacodynamics, dose-response, exposure, clearance, and therapeutic windows", frozenset({"clinical", "drug_labels", "properties"}), frozenset({"pkpd_measurements"}), (MHC_SAFETY_PROCESS, MHC_EVIDENCE_UNCERTAINTY, MHC_LAB_MERIT), ), NoNEScienceSpecialistDefinition( "drug_interaction_transporter_enzyme", "drug-drug interactions, transporter and enzyme inhibition, induction, and interaction risk", frozenset({"clinical", "drug_labels", "off_targets", "targets"}), frozenset({"drug_interaction_measurements"}), (MHC_SAFETY_PROCESS, MHC_EVIDENCE_UNCERTAINTY), ), NoNEScienceSpecialistDefinition( "toxicology_mechanism_pathology", "mechanistic toxicology, organ pathology, dose response, adverse outcomes, and causal evidence", frozenset({"clinical", "hazards", "negative_results", "toxicity"}), frozenset({"toxicology_outcomes"}), (MHC_SAFETY_PROCESS, MHC_EVIDENCE_UNCERTAINTY, MHC_LAB_MERIT), ), NoNEScienceSpecialistDefinition( "pharmacogenomics_precision_medicine", "genotype-drug response, alleles, phenotypes, ancestry-aware evidence, and precision dosing", frozenset({"clinical", "omics", "target_disease", "targets"}), frozenset({"pharmacogenomic_associations"}), (MHC_SAFETY_PROCESS, MHC_EVIDENCE_UNCERTAINTY), ), NoNEScienceSpecialistDefinition( "biomarker_companion_diagnostic", "predictive and prognostic biomarkers, assay context, companion diagnostics, and patient stratification", frozenset({"clinical", "omics", "targets"}), frozenset({"biomarker_associations"}), (MHC_EVIDENCE_UNCERTAINTY, MHC_LAB_MERIT), ), NoNEScienceSpecialistDefinition( "clinical_trial_protocol_outcomes", "trial design, eligibility, interventions, endpoints, adverse events, failures, and outcome interpretation", frozenset({"clinical", "negative_results", "regulatory_status"}), frozenset({"clinical_trial_outcomes"}), (MHC_SAFETY_PROCESS, MHC_EVIDENCE_UNCERTAINTY, MHC_LAB_MERIT), ), NoNEScienceSpecialistDefinition( "regulatory_chemistry_cmc", "chemistry manufacturing and controls, specifications, comparability, stability, and regulatory evidence", frozenset({"impurities", "manufacturing", "regulatory_status"}), frozenset({"regulatory_cmc"}), ( MHC_SAFETY_PROCESS, MHC_SCALE_IMPURITY, MHC_EVIDENCE_UNCERTAINTY, ), ), NoNEScienceSpecialistDefinition( "formulation_delivery_stability", "formulation composition, delivery systems, excipients, stability, degradation, and shelf life", frozenset({"drug_labels", "impurities", "properties"}), frozenset({"formulation_stability"}), ( MHC_CHEMICAL_PLAUSIBILITY, MHC_SAFETY_PROCESS, MHC_SCALE_IMPURITY, ), ), NoNEScienceSpecialistDefinition( "starting_material_supply_chain", "starting-material availability, suppliers, trade, regional constraints, cost, and supply-chain resilience", frozenset({"manufacturing", "production_volume", "trade_or_use"}), frozenset({"starting_material_supply"}), (MHC_STARTING_MATERIAL, MHC_SCALE_IMPURITY), ), NoNEScienceSpecialistDefinition( "process_analytical_control", "process analytical technology, critical quality attributes, controls, sensors, and batch consistency", frozenset({"analytical_assays", "impurities", "manufacturing", "process_scale"}), frozenset({"process_analytical_control"}), (MHC_SAFETY_PROCESS, MHC_SCALE_IMPURITY), ), NoNEScienceSpecialistDefinition( "reaction_calorimetry_thermal_runaway", "reaction calorimetry, heat and gas evolution, thermal runaway, mixing, and safe operating envelopes", frozenset({"conditions", "hazards", "process_scale"}), frozenset({"reaction_calorimetry"}), (MHC_SAFETY_PROCESS, MHC_SCALE_IMPURITY, MHC_LAB_MERIT), ), NoNEScienceSpecialistDefinition( "impurity_fate_purge_genotoxic", "impurity formation, fate and purge, genotoxic alerts, carryover, specifications, and control strategies", frozenset({"impurities", "process_scale", "toxicity", "yields"}), frozenset({"impurity_fate_and_purge"}), (MHC_SAFETY_PROCESS, MHC_SCALE_IMPURITY, MHC_LAB_MERIT), ), NoNEScienceSpecialistDefinition( "green_chemistry_lifecycle", "solvent and reagent footprint, emissions, waste, energy, lifecycle burden, and greener route selection", frozenset({"emissions_or_exposure", "process_scale", "trade_or_use"}), frozenset({"green_chemistry_metrics"}), (MHC_STARTING_MATERIAL, MHC_SAFETY_PROCESS, MHC_SCALE_IMPURITY), ), NoNEScienceSpecialistDefinition( "patent_family_claim_scope", "patent families, claims, examples, legal status, assignees, and composition or process scope", frozenset({"patent_full_text", "patent_metadata", "procedures"}), frozenset({"patent_claims_and_families"}), (MHC_ROUTE_DISTANCE, MHC_EVIDENCE_UNCERTAINTY), ), NoNEScienceSpecialistDefinition( "route_novelty_literature_distance", "route novelty, precedent distance, convergence, hidden dependencies, and prior-art comparison", frozenset( { "literature_full_text", "patent_full_text", "procedures", "reaction_records", } ), frozenset({"route_comparison_annotations"}), ( MHC_ROUTE_DISTANCE, MHC_STARTING_MATERIAL, MHC_STEP_CONVERGENCE, ), ), NoNEScienceSpecialistDefinition( "evidence_contradiction_temporal_provenance", "contradictory findings, temporal evidence, retractions, source dependence, leakage, and calibrated uncertainty", frozenset( { "literature_metadata", "negative_results", "patent_metadata", "uncertainty", } ), frozenset({"temporal_contradiction_annotations"}), (MHC_EVIDENCE_UNCERTAINTY, MHC_LAB_MERIT), ), NoNEScienceSpecialistDefinition( "prospective_experiment_design_active_learning", "information-gain experiment selection, controls, replicates, stopping criteria, failures, and uncertainty reduction", frozenset({"failed_assays", "negative_results", "uncertainty"}), frozenset({"prospective_experiment_outcomes"}), (MHC_EVIDENCE_UNCERTAINTY, MHC_LAB_MERIT), ), NoNEScienceSpecialistDefinition( "laboratory_automation_closed_loop", "automation-ready protocols, instrument actions, observations, repair, and closed-loop experimental feedback", frozenset({"conditions", "procedures", "reaction_records", "yields"}), frozenset({"laboratory_automation_runs"}), ( MHC_STEP_CONVERGENCE, MHC_SAFETY_PROCESS, MHC_EVIDENCE_UNCERTAINTY, MHC_LAB_MERIT, ), ), NoNEScienceSpecialistDefinition( "medicinal_chemistry_sar_multiparameter_optimization", "series-level medicinal chemistry, activity cliffs, and synthesis-aware multiparameter optimization", frozenset( { "bioactivity", "conditions", "negative_results", "properties", "structures", } ), frozenset({"medicinal_chemistry_multiparameter_series"}), ( MHC_CHEMICAL_PLAUSIBILITY, MHC_SAFETY_PROCESS, MHC_EVIDENCE_UNCERTAINTY, MHC_LAB_MERIT, ), ), NoNEScienceSpecialistDefinition( "molecular_library_scaffold_hopping_novelty_diversity", "scaffold hopping, bioisosteres, novelty-diversity control, and coverage-aware molecular library design", frozenset( { "conformers", "patent_metadata", "properties", "stereochemistry", "structures", } ), frozenset({"scaffold_hop_library_annotations"}), ( MHC_CHEMICAL_PLAUSIBILITY, MHC_ROUTE_DISTANCE, MHC_STEP_CONVERGENCE, MHC_EVIDENCE_UNCERTAINTY, ), ), NoNEScienceSpecialistDefinition( "target_validation_causal_disease_mechanism", "causal target validation, intervention direction, tissue context, confounding, and translational failure", frozenset( { "clinical", "literature_full_text", "negative_results", "omics", "targets", } ), frozenset({"causal_target_validation_annotations"}), (MHC_EVIDENCE_UNCERTAINTY, MHC_LAB_MERIT), ), NoNEScienceSpecialistDefinition( "patent_enablement_markush_claim_chart_freedom_to_operate", "patent enablement, example-to-claim mapping, Markush resolution, claim charts, and freedom-to-operate risk", frozenset( { "patent_full_text", "patent_metadata", "procedures", "structures", } ), frozenset({"patent_enablement_markush_claim_charts"}), (MHC_ROUTE_DISTANCE, MHC_EVIDENCE_UNCERTAINTY), ), NoNEScienceSpecialistDefinition( "reaction_condition_yield_failure_optimization", "condition and yield optimization from positive and failed reactions with mechanism-consistent repair", frozenset( { "conditions", "negative_results", "procedures", "reaction_records", "yields", } ), frozenset({"reaction_condition_failure_outcomes"}), ( MHC_CHEMICAL_PLAUSIBILITY, MHC_STEP_CONVERGENCE, MHC_SAFETY_PROCESS, MHC_SCALE_IMPURITY, ), ), NoNEScienceSpecialistDefinition( "translational_candidate_selection_clinical_feasibility", "preclinical-to-clinical candidate selection across exposure, biomarkers, population, endpoints, and CMC feasibility", frozenset( { "bioactivity", "clinical", "clinical_trial_outcomes", "drug_labels", "regulatory_status", } ), frozenset({"translational_candidate_decisions"}), ( MHC_SAFETY_PROCESS, MHC_SCALE_IMPURITY, MHC_EVIDENCE_UNCERTAINTY, MHC_LAB_MERIT, ), ), NoNEScienceSpecialistDefinition( "polypharmacology_combination_resistance_network", "multi-target mechanisms, combination rationale, resistance escape, antagonism, and interaction burden", frozenset( { "bioactivity", "clinical", "negative_results", "off_targets", "targets", } ), frozenset({"polypharmacology_resistance_networks"}), (MHC_SAFETY_PROCESS, MHC_EVIDENCE_UNCERTAINTY, MHC_LAB_MERIT), ), NoNEScienceSpecialistDefinition( "drug_repurposing_mechanism_evidence", "indication transfer through mechanism concordance, exposure feasibility, clinical precedent, and contradiction analysis", frozenset( { "bioactivity", "clinical", "drug_labels", "literature_full_text", "targets", } ), frozenset({"repurposing_mechanism_evidence_graphs"}), (MHC_SAFETY_PROCESS, MHC_EVIDENCE_UNCERTAINTY, MHC_LAB_MERIT), ), NoNEScienceSpecialistDefinition( "process_technoeconomic_supply_lifecycle_decision", "process portfolio decisions across feedstocks, throughput, energy, waste, hazards, cost proxies, and supply resilience", frozenset( { "emissions_or_exposure", "hazards", "impurities", "process_scale", "production_volume", "trade_or_use", } ), frozenset({"process_technoeconomic_lifecycle_decisions"}), ( MHC_STARTING_MATERIAL, MHC_SAFETY_PROCESS, MHC_SCALE_IMPURITY, MHC_EVIDENCE_UNCERTAINTY, ), ), NoNEScienceSpecialistDefinition( "causal_counterfactual_end_state_scientific_planning", "end-state-backward planning, counterfactual interventions, adaptive evidence acquisition, and execution closure", frozenset( { "clinical_trial_outcomes", "negative_results", "procedures", "reaction_records", "uncertainty", } ), frozenset({"counterfactual_end_state_execution_outcomes"}), ( MHC_CHEMICAL_PLAUSIBILITY, MHC_ROUTE_DISTANCE, MHC_STARTING_MATERIAL, MHC_STEP_CONVERGENCE, MHC_SAFETY_PROCESS, MHC_SCALE_IMPURITY, MHC_EVIDENCE_UNCERTAINTY, MHC_LAB_MERIT, ), ), ) NONE_V2_PLUS_SCIENCE_SPECIALIST_FAMILIES: Final[ tuple[tuple[str, str, frozenset[str]], ...] ] = tuple( ( definition.family_id, definition.description, definition.routing_claims, ) for definition in NONE_V2_PLUS_SCIENCE_SPECIALIST_DEFINITIONS ) NONE_V2_PLUS_SCIENCE_SPECIALIST_IDS_SHA256: Final = hashlib.sha256( "\n".join( definition.family_id for definition in NONE_V2_PLUS_SCIENCE_SPECIALIST_DEFINITIONS ).encode("utf-8") ).hexdigest() _family_ids = tuple( definition.family_id for definition in NONE_V2_PLUS_SCIENCE_SPECIALIST_DEFINITIONS ) _route_rubric_ids = tuple( factor.factor_id for factor in NONE_ROUTE_INVESTIGATION_RUBRIC_FACTORS ) if ( len(_route_rubric_ids) != 8 or len(set(_route_rubric_ids)) != len(_route_rubric_ids) or set(_route_rubric_ids) != NONE_SCIENCE_SPECIALIST_RUBRIC_FACTORS or any( len(factor.score_anchors) != 5 or not factor.required_evidence or any(not value.strip() for value in factor.score_anchors) for factor in NONE_ROUTE_INVESTIGATION_RUBRIC_FACTORS ) ): raise RuntimeError("NoNE route-investigation scoring rubric is invalid") if len(_family_ids) < 43 or len(set(_family_ids)) != len(_family_ids): raise RuntimeError("NoNE science-specialist catalog is incomplete or duplicated") if any(family_id.startswith("language_") for family_id in _family_ids): raise RuntimeError("NoNE science-specialist family collides with language catalog") if any( not definition.routing_claims or not definition.readiness_claims or not definition.rubric_factors or not set(definition.rubric_factors).issubset( NONE_SCIENCE_SPECIALIST_RUBRIC_FACTORS ) for definition in NONE_V2_PLUS_SCIENCE_SPECIALIST_DEFINITIONS ): raise RuntimeError("NoNE science-specialist evidence or rubric contract is invalid")