TNFR Logo
TheoryLearnSoftwareResearch

On this page

TNFR

Resonant Fractal Nature Theory — a mathematical framework for coherent patterns on graph-coupled networks.

About
  • Project history
  • Editorial policy
  • Contact
Resources
  • GitHub
  • PyPI
  • DOI · Zenodo
Legal
  • MIT License
  • Citation
© 2026 TNFR project — MIT licensed.DOI 10.5281/zenodo.17602860
docs
grammar
PHYSICS_VERIFICATION.md
API_CONTRACTS.mdCANONICAL_OZ_SEQUENCES.mdEMPIRICAL_CONFRONTATION_EEG.mdREADME.mdSTRUCTURAL_FIELDS_TETRAD.mdSTRUCTURAL_INTERFACE_THEORY.md
theory
APPLIED_STRUCTURAL_ANALYSIS.mdCATALOG_TYPE_HYGIENE_PROGRAMME.mdDISSIPATIVE_AND_OPEN_SYSTEMS.mdEMERGENT_ONTOLOGY.mdEXTENDED_FIELDS_AND_DERIVED_QUANTITIES.mdFUNDAMENTAL_THEORY.mdGAUGE_SYMMETRY_AND_UNIFICATION.mdGLOSSARY.mdMATHEMATICAL_DYNAMICS_BASIS.mdMINIMAL_STRUCTURAL_DEGREES.mdNUCLEUS_A_PRIME_LADDER_ATLAS.mdNUCLEUS_B_EQUIVARIANCE_OBSTRUCTIONS.mdPHYSICAL_REGIME_CORRESPONDENCES.mdREADME.mdREMESH_INFINITY_DERIVATION.mdSTRUCTURAL_CONSERVATION_THEOREM.mdSTRUCTURAL_OPERATORS.mdSTRUCTURAL_STABILITY_AND_DYNAMICS.mdTNFR_BSD_RESEARCH_NOTES.mdTNFR_HODGE_RESEARCH_NOTES.mdTNFR_NAVIER_STOKES_RESEARCH_NOTES.mdTNFR_NUMBER_THEORY.mdTNFR_P_VS_NP_RESEARCH_NOTES.mdTNFR_RIEMANN_RESEARCH_NOTES.mdTNFR_VARIATIONAL_PRINCIPLE.mdTNFR_YANG_MILLS_RESEARCH_NOTES.mdTNFR.pdfUNIFIED_GRAMMAR_RULES.md
factorization-lab
analysis
analyze_patterns.pycertificate_manifest.py
benchmarks
benchmark_analysis.pybenchmark_expansion_suite.pyfull_spectrum_factorization.pypaley_gap_extended.pypaley_gap_smoke.pytest_benchmark_suite.py
demos
experiment_contexts
exp_0b1663cd19b7.jsonexp_0bf0054b7474.jsonexp_75a4c8ca616a.jsonexp_848ee0fd1857.jsonexp_f6fe00562193.jsonexp_fdf3da424e1e.json
failure_telemetry_batch.pyfeedback_integration_demo.pyintegration_demo_snapshots.dbseed_management_integration_demo.pysnapshot_integration_demo.pytrajectory_143.jsontrajectory_77.jsontrajectory_89.jsontrajectory_91.jsontrajectory_97.json
docs
FACTORING_PLAYBOOK.mdFALSE_POSITIVE_TEST_SUITE.mdOPERATOR_CERTIFICATES.mdROADMAP.mdSPECTRAL_ROUTE.md
experiment_contexts
exp_cebe1d9e7d8e.json
notebooks
spectral_history.ipynb
scripts
run_false_positive_tests.py
tests
run_false_positive_test_suite.pytest_cli.pytest_false_positive_methodology.pytest_false_positive_verifier.pytest_feedback_integration.pytest_partitioning.pytest_seed_management.pytest_self_opt_support.pytest_snapshot_system.pytest_spectral_paley.pytest_verification_robustness.py
tnfr_factorization
__init__.pyapi.pycli.pyfailure_telemetry.pyfeedback_adapter.pyfeedback_integration.pypartitioning.pyself_opt_support.pyspectral_paley.py
demo_snapshots.dbLICENSE_SNAPSHOT.mdPACKAGE_SUMMARY.mdREADME.mdseed_management.pysnapshot_system.pytest_certificate_hashing.pytest_installation.pyverification_trajectory_77.json
benchmarks
analyze_tetrad_universality.pyb0star_alpha_canonical_product_graphs.pybenchmark_optimization_tracks.pybenchmark_utils.pyboundary_vibration.pybridge_primes_riemann.pychiral_involution.pycli_utils.pycoherence_projector_sense_index.pycommutant_bridge.pycomposition_arithmetic.pyconfinement_zones_test.pyconservation_law_validation.pydirected_paley_bridge.pyemergent_arithmetic_pulse.pyemergent_atom_dynamics.pyemergent_atomic_shells.pyemergent_base_dimension.pyemergent_dimension_dynamics.pyemergent_fractal_pulse.pyemergent_fractal_simplex_dimension.pyemergent_integers_symmetry.pyemergent_musical_nfr.pyemergent_nfr_geometry.pyemergent_nfr_where.pyemergent_rationals.pyemergent_rhythm.pyemergent_screening.pyemergent_shell_cardinals.pyemergent_shell_ordering.pyemergent_simplex_dimension.pyemergent_substrate_symmetry.pyequivariance_wall.pyexternal_phase_gate_validation.pyfield_methods_battery.pygolden_residue_remesh_bridge.pyintegrated_force_regime_study.pyinverse_spectrum_to_symmetry.pyk_phi_safety_demo.pykuramoto_farey_bridge.pymissing_piece_bridge.pymultichannel_interface_benchmark.pynavier_stokes_recipe_bridge.pynodal_propagator_residue_bridge.pyns_moment_hierarchy_cascade.pyoperational_irreducibility.pypaley_bridge.pyphase_curvature_investigation.pyphase_wall.pyphi_s_confinement_investigation.pyprimes_as_consequence.pypulse_phase_coherence_budget.pyREADME.mdremesh_infinity_riemann_baseline.pyremesh_infinity_riemann_composed.pyremesh_infinity_riemann_modified_graph.pyremesh_infinity_riemann_operator.pyremesh_infinity_riemann_spectral_basis.pyremesh_infinity_riemann_spectral_robustness.pyremesh_infinity_riemann_spectral.pyresidue_phase_vs_riemann.pystructural_interface_benchmark.pytemporal_interface_benchmark.pytetrad_results_aggregate.pyu2_destabilization_irreversibility.pyuniversality_clusters.pyxi_c_fast_experiment.py
primality-test
benchmarks
comprehensive_benchmark.py
docs
ADVANCED_INTEGRATION.mdmathematical_foundation.mdperformance_analysis.md
examples
advanced_examples.pybasic_usage.py
tnfr_primality
__init__.py__main__.pyadvanced_cli.pyadvanced_core.pycli.pyconstants.pycore.pyoptimized.py
MANIFEST.inPACKAGE_SUMMARY.mdREADME.mdRELEASE_NOTES_v1.0.mdsetup.pytest_installation.py
tests
core_physics
__init__.pytest_conservation_laws.pytest_delta_nfr_computation_paths.pytest_delta_nfr.pytest_dispersion_coherence_sign_invariance.pytest_emergent_constants_guard.pytest_lyapunov_operators.pytest_nodal_equation.pytest_structural_triad.py
data
replay_manifests
sample_run
_manifest_summary.json_manifest.json_partition_files.txt.gz
self_opt_validation
seed_alpha
paley.json
seed_beta
integration.json
seed_gamma
unknown.json
self_optimization
test_run
partitioned
test_run
test_run_p0.jsontest_run_p1.json
_manifest_summary.json_manifest.json
engines
test_pattern_discovery_manifest.pytest_self_optimization_engine.py
mathematics
__init__.pytest_autodiff.pytest_backends.pytest_dissipative_dynamics.pytest_epi.pytest_factory_patterns.pytest_metrics.pytest_navier_stokes_refounded.pytest_number_theory_canonical.pytest_operators.pytest_residue_networks.pytest_riemann_nodal_pulse.pytest_riemann_pulse_coherence.pytest_spaces.pytest_transforms.pytest_validator.py
operators
test_canonical_operators_modern.pytest_grammar_canon.pytest_grammar_canonical_consistency.pytest_grammar_dynamics.pytest_operator_contracts.pytest_operator_strategies.py
parallel
test_fractal_partition_manifest.py
physics
test_conservation_gauge_unification.pytest_dissipative_conservation.pytest_emergent_chemistry.pytest_field_cache_invalidation.pytest_gauge.pytest_phase_transition.pytest_signatures.pytest_spectral_conservation.pytest_structural_diffusion.pytest_structural_integrity.pytest_symplectic_substrate.pytest_tetrad_bounds.pytest_variational.pytest_yang_mills_closure.pytest_yang_mills_derivability.pytest_yang_mills_scaling.pytest_yang_mills_structural_gap.pytest_yang_mills_u6_sweep.py
scripts
test_run_self_opt_validation.pytest_run_self_optimization.py
sdk
__init__.pytest_simple_advanced.py
__init__.pyconftest.pyREADME.mdtest_breast_cancer_phase_gate_demo.pytest_classical_mechanics.pytest_distributed_fft.pytest_external_phase_gate_validation.pytest_factorization_entrypoint.pytest_multichannel_interface.pytest_nodal_optimizer.pytest_phase_gate_api.pytest_replay_register_manifest.pytest_signal_confrontation.pytest_structural_interface_api.pytest_structural_interface_baselines.pytest_structural_interface_benchmark.pytest_temporal_interface.pytest_vectorized_coherence_length_regression.pytest_wine_quality_phase_gate_demo.pyutils.py
examples
01_foundations
01_hello_world.py02_musical_resonance.py03_network_formation.py04_operator_sequences.py05_coherence_evolution.py06_network_topologies.py07_phase_transitions.py08_emergent_phenomena.py09_visualization_suite.py10_simplified_sdk_showcase.py
02_physics_regimes
11_classical_limit_comparison.py115_operator_contract_audit.py12_classical_mechanics_demo.py13_quantum_mechanics_demo.py14_uncertainty_and_interference.py15_train_crossing_demo.py17_conservation_law_demo.py26_gauge_structure_demo.py27_variational_principle_demo.py28_dissipative_systems_demo.py29_lyapunov_stability_demo.py30_self_optimization_demo.py31_mathematical_constants_basis.py33_complex_field_unification.py34_conservation_protocol_suite.py35_tetrad_irreducibility.py36_grammar_violation_detector.py37_operator_tetrad_synergy.py38_grammar_energy_landscape.py39_nodal_equation_decomposition.py
03_riemann_zeta
157_nodal_pulse_phase_attack.py41_von_mangoldt_zeta_demo.py42_riemann_zeros_as_resonances.py43_prime_ladder_hamiltonian_demo.py44_weil_explicit_formula_demo.py45_li_keiper_demo.py46_weil_tnfr_positivity_demo.py47_alpha_sweep_demo.py48_admissible_family_sweep_demo.py49_nodeaware_gauge_sweep_demo.py50_uniform_coercivity_demo.py51_adaptive_coercivity_demo.py52_paley_gap_coercivity_demo.py53_lyapunov_spectral_positivity_demo.py54_hilbert_polya_demo.py55_structural_zero_density_demo.py56_spectral_emergence_demo.py57_admissible_rescaling_demo.py58_oscillatory_correction_demo.py
04_riemann_L_twisted
59_dirichlet_l_function_demo.py60_dirichlet_l_continuation_demo.py61_dirichlet_l_hamiltonian_demo.py62_dirichlet_weil_explicit_formula_demo.py63_dirichlet_li_keiper_demo.py64_twisted_weil_positivity_demo.py65_twisted_alpha_sweep_demo.py66_twisted_admissible_family_sweep_demo.py67_twisted_nodeaware_gauge_sweep_demo.py68_twisted_hermite_family_demo.py69_twisted_coercivity_uniform_demo.py70_twisted_paley_gap_coercivity_demo.py71_twisted_lyapunov_spectral_demo.py72_twisted_hilbert_polya_demo.py73_twisted_structural_zero_density_demo.py74_twisted_spectral_emergence_demo.py75_twisted_admissible_rescaling_demo.py76_twisted_oscillatory_correction_demo.py
05_type_hygiene
77_remesh_infinity_residue_split_demo.py78_nuf_type_signature_demo.py79_epi_type_signature_demo.py80_phi_type_signature_demo.py81_dnfr_type_signature_demo.py82_remesh_window_type_signature_demo.py83_delta_phi_max_type_signature_demo.py84_coupling_weights_type_signature_demo.py85_tetrad_closure_signature_demo.py86_currents_closure_signature_demo.py87_aggregates_closure_signature_demo.py88_urules_consistency_signature_demo.py89_operator_catalog_discipline_signature_demo.py
06_navier_stokes
158_navier_stokes_two_face_refounded.py
07_number_theory
100_prime_families_orbits.py101_numbers_as_coupled_network.py102_nodal_flow_primes_equilibria.py116_nuf_emergent_prime_visibility.py146_primality_grammatical_inertness.py147_numbers_as_free_monoid_words.py148_capacity_arm_carries_von_mangoldt.py149_p14_is_the_capacity_arm_operator.py153_structural_frequency_rank_cyclotomy.py40_arithmetic_number_theory.py94_generative_number_construction.py95_primes_from_spectral_waves.py96_spectral_vibration_of_coherence.py97_goldbach_additive_multiplicative.pyemergent_chemistry_particles_demo.py
08_emergent_geometry
103_emergent_substrate_meets_riemann.py106_per_node_polarization_geometry.py107_orthogonal_structure_emergent_geometry.py108_emergent_field_generating_structure.py112_structure_predicts_coherence_flow.py113_overdamped_projection_bridge.py114_substrate_conserved_quantities.py117_emergent_geometry_residue_graph.py118_emergent_vs_classical_operator.py119_phase_sector_directed_residue.py120_symmetry_wall_substrate_vs_spectrum.py121_canonical_symmetry_break_negative.py122_factorization_phase_sector.py123_symmetry_sector_decomposition.py124_emergent_metric_fractal_consistency.py125_node_is_the_emergent_substrate.py126_two_layers_base_fiber.py127_base_is_emergent_not_imposed.py128_base_substrate_coemergence.py129_spectral_gap_base_fiber_clock.py130_operators_break_substrate_charges.py131_coemergent_loop_convergence.py132_geometric_phase_holonomy.py133_psi_topological_defects.py134_spectral_dimension_heat_kernel.py135_arrow_of_time_h_theorem.py136_heat_kernel_coefficients.py137_synchronization_transition.py138_structure_frequency_synchronization.py139_grammar_formal_language.py140_grammar_automaton.py141_grammar_rule_decomposition.py142_grammar_operator_quotient.py143_glyphic_function_sublanguage.py144_branching_combinator.py145_syntactic_monoid_starfree.py150_emergent_grammatical_pattern_parry.py151_grammar_in_emergent_geometry.py152_operator_contract_tetrahedron.py154_conductor_annotated_qr_spectrum.py155_ontological_position_of_numbers.py156_emergence_directness_law.py98_emergent_symplectic_substrate.py99_structural_diffusion.pyunified_fields_showcase.py
09_millennium
109_p_vs_np_coherence_synthesis.py110_bsd_rank_structural_pressure.py111_hodge_discrete_and_honest_gap.py
10_applications
159_empirical_confrontation_pipeline.py90_phase_gate_monitor_demo.py91_breast_cancer_phase_gate_demo.py92_wine_quality_phase_gate_demo.py93_structural_interface_demo.pypytorch_cuda_demo.py
README.md
scripts
replay
__init__.pyregister_manifest.py
__init__.pyREADME.mdrebuild_failure_manifest.pyrun_reproducible_benchmarks.pyrun_self_opt_validation.pyrun_self_optimization.pytnfr_is_prime.pyvalidate_conservation_law.pyverify_internal_references.py
src
core
__init__.pyevaluation.py
tnfr
backends
__init__.pyjax_backend.pynumpy_backend.pyoptimized_numpy.pyREADME.mdtorch_backend.py
cli
__init__.py__init__.pyiarguments.pyarguments.pyiexecution.pyexecution.pyiinteractive_validator.pyREADME.mdutils.pyutils.pyi
compat
__init__.pydataclass.pyjsonschema_stub.pymatplotlib_stub.pynumpy_stub.pyREADME.md
config
__init__.py__init__.pyiconstants.pyconstants.pyidefaults_core.pydefaults_init.pydefaults_metric.pydefaults.pyfeature_flags.pyfeature_flags.pyiglyph_constants.pyoperator_names.pyoperator_names.pyiphysics_derivation.pyprecision_modes.pypresets.pypresets.pyiREADME.mdsecurity.pythresholds.pytnfr_config.py
constants
__init__.py__init__.pyialiases.pyaliases.pyicanonical.pymetric.pymetric.pyioperational.py
core
__init__.pycontainer.pydefault_implementations.pyexceptions.pyinterfaces.pyREADME.md
dynamics
__init__.py__init__.pyiadaptation.pyadaptation.pyiadaptive_sequences.pyadaptive_sequences.pyiadelic.pyadvanced_cache_optimizer.pyadvanced_fft_arithmetic.pyaliases.pyaliases.pyibifurcation.pycache_aware_fft_engine.pycanonical.pycanonical.pyicomputational_hub.pycoordination.pycoordination.pyidistributed_fft.pydnfr.pydnfr.pyidynamic_limits.pyemergent_centralization.pyemergent_integration_engine.pyfeedback.pyfeedback.pyifft_backend.pyfft_cache_coordinator.pyfft_dispatchers.pyfft_engine.pyfft_workers.pyfused_dnfr.pyhomeostasis.pyhomeostasis.pyiintegrators.pyintegrators.pyilearning.pylearning.pyimetabolism.pymulti_modal_cache.pynbody_tnfr.pynbody.pynodal_optimizer.pyoptimization_orchestrator.pypropagation.pyREADME.mdruntime.pyruntime.pyisampling.pysampling.pyiselectors.pyselectors.pyiself_optimizing_engine.pyspectral_structural_fusion.pystructural_cache.pystructural_clip.pysymplectic.pyunified_backend.pyunified_mathematical_cache_orchestrator.py
engines
computation
__init__.pyfft_engine.pyunified_fft_engine.pyunified_gpu_system.py
constants
__init__.pycanonical.pyoperational.py
integration
__init__.pyemergent_integration.py
pattern_discovery
__init__.pymathematical_patterns.pymulti_modal_cache.py
self_optimization
__init__.pyengine.py
__init__.pyREADME.md
errors
__init__.pycontextual.py
factorization
__init__.py
flatten
README.md
gamma
README.md
glyph_history
README.md
glyph_runtime
README.md
immutable
README.md
initialization
README.md
io
README.md
math
__init__.pyfields_symbolic.pygrammar_validators.pyoptimizer.pyREADME.mdsymbolic.py
mathematics
__init__.pybackend.pybackend.pyidynamics.pydynamics.pyiepi.pyepi.pyigenerators.pygenerators.pyiliouville.pymetrics.pymetrics.pyinumber_theory.pyoperators_factory.pyoperators_factory.pyioperators.pyoperators.pyioptimized_primality.pyprojection.pyprojection.pyiREADME.mdruntime.pyruntime.pyispaces.pyspaces.pyispectral.pytransforms.pytransforms.pyiunified_cache.pyunified_numerical.pyzeta.py
metrics
__init__.py__init__.pyibuffer_cache.pybuffer_cache.pyicache_utils.pycoherence.pycoherence.pyicommon.pycommon.pyicore.pycore.pyidiagnosis.pydiagnosis.pyiemergence.pyexport.pyexport.pyiglyph_timing.pyglyph_timing.pyilearning_metrics.pylearning_metrics.pyilocal_coherence.pyphase_coherence.pyphase_compatibility.pyREADME.mdreporting.pyreporting.pyisense_index.pysense_index.pyitelemetry.pytetrad.pytrig_cache.pytrig_cache.pyitrig.pytrig.pyi
multiscale
__init__.pyhierarchical.pyREADME.md
navier_stokes
__init__.pyconservative_face.pyoperator.py
node
README.md
observers
README.md
operators
network_analysis
__init__.pysource_detection.py
postconditions
__init__.pymutation.py
preconditions
__init__.pycoherence.pydissonance.pyemission.pymutation.pyreception.pyresonance.py
strategies
__init__.pydefaults.pygpu_strategies.pystrategy.py
__init__.py__init__.pyialgebra.pycanonical_patterns.pycascade.pycoherence.pycontraction.pycoupling.pycycle_detection.pydefinitions_base.pydefinitions.pydefinitions.pyidissonance.pyemission.pyexpansion.pygrammar_application.pygrammar_canon.pygrammar_context.pygrammar_core.pygrammar_dynamics.pygrammar_error_factory.pygrammar_memoization.pygrammar_patterns.pygrammar_telemetry.pygrammar_types.pygrammar_u6.pygrammar_validate.pygrammar.pygrammar.pyihamiltonian.pyhealth_analyzer.pyintrospection.pyjitter.pyjitter.pyilifecycle.pymetabolism.pymetrics_basic.pymetrics_core.pymetrics_network.pymetrics_structural.pymetrics_u6.pymetrics.pymutation.pynodal_equation.pyoperator_contracts.pypattern_detection.pypatterns.pyREADME.mdreception.pyrecursivity.pyregistry.pyregistry.pyiremesh.pyremesh.pyiresonance.pyself_organization.pysilence.pystructural_units.pytransition.py
parallel
__init__.pyauto_scaler.pydistributed.pyengine.pymonitoring.pypartitioner.pyREADME.md
performance
guardrails.py
physics
__init__.py_helpers.pycalibration.pycanonical.pycell.pyclassical_mechanics.pyconservation_gauge_unification.pyconservation.pydissipative_conservation.pyemergent_chemistry.pyemergent_particles.pyextended.pyfields.pygauge.pyintegrity.pyinteractions.pylife.pylyapunov.pypatterns.pyphase_transition.pyquantum_mechanics.pyREADME.mdsignatures.pyspectral_conservation.pyspectral_metrics.pystructural_diffusion.pysymplectic_substrate.pytelemetry.pyunified.pyvariational.pyvectorized_ops.py
primality
__init__.py
recipes
__init__.pycookbook.pyREADME.md
riemann
__init__.pyadmissible_family_sweep.pyadmissible_rescaling.pyaggregates_closure_signature.pyalpha_sweep.pyanalytic_continuation_dirichlet.pyanalytic_continuation.pycoercivity_uniform.pycoupling_weights_type_signature.pycurrents_closure_signature.pydelta_phi_max_type_signature.pydirichlet_l.pydnfr_type_signature.pyepi_type_signature.pyhilbert_polya.pyli_keiper.pylyapunov_spectral_positivity.pynodal_pulse.pynodeaware_gauge_sweep.pynuf_type_signature.pyoperator_catalog_discipline_signature.pyoperator.pyoscillatory_correction.pypaley_gap_coercivity.pyphi_type_signature.pyprime_ladder_hamiltonian.pypulse_coherence.pyremesh_infinity_residue_split.pyremesh_window_type_signature.pyspectral_emergence.pystructural_zero_density.pytelemetry.pytetrad_closure_signature.pytwisted_admissible_family_sweep.pytwisted_admissible_rescaling.pytwisted_alpha_sweep.pytwisted_coercivity_uniform.pytwisted_hermite_family.pytwisted_hilbert_polya.pytwisted_li_keiper.pytwisted_lyapunov_spectral_positivity.pytwisted_nodeaware_gauge_sweep.pytwisted_oscillatory_correction.pytwisted_paley_gap_coercivity.pytwisted_prime_ladder_hamiltonian.pytwisted_spectral_emergence.pytwisted_structural_zero_density.pytwisted_weil_explicit_formula.pytwisted_weil_positivity.pyurules_consistency_signature.pyvon_mangoldt.pyweil_explicit_formula.pyweil_positivity.py
schemas
__init__.pygrammar.jsonREADME.md
sdk
__init__.py__init__.pyiadaptive_system.pyadaptive_system.pyibuilders.pybuilders.pyifluent.pyfluent.pyiREADME.mdself_opt.pysimple.pytemplates.pytemplates.pyiutils.py
security
__init__.pycrypto.pydatabase.pyREADME.mdsubprocess.pyvalidation.py
sequencing
__init__.pypatterns.pyREADME.md
services
__init__.pyorchestrator.pyREADME.md
sparse
__init__.pyREADME.mdrepresentations.py
structural
README.md
telemetry
__init__.pycache_metrics.pycache_metrics.pyiconstants.pynu_f.pynu_f.pyiREADME.mdunified_telemetry_system.pyverbosity.pyverbosity.pyi
tools
__init__.pydomain_templates.pyREADME.mdsequence_generator.pytnfr_is_prime_cli_optimized.pytnfr_is_prime_cli.py
topology
__init__.pyasymmetry.pyREADME.md
utils
cache_layers.pycache.pycache.pyicallbacks.pycallbacks.pyichunks.pychunks.pyidata.pydata.pyifast_diameter.pygraph.pygraph.pyiinit.pyinit.pyiio.pyio.pyinumeric.pynumeric.pyiREADME.mdtopology.pyunified_cache.py
validation
__init__.py__init__.pyiaggregator.pybase.pycompatibility.pycompatibility.pyiconfig.pygraph.pygraph.pyihealth.pyinput_validation.pyinterface_baselines.pyinvariants.pymultichannel_interface.pyphase_gate.pyREADME.mdrules.pyrules.pyiruntime.pyruntime.pyisequence_validator.pysignal_confrontation.pysoft_filters.pysoft_filters.pyispectral.pyspectral.pyistructural_interface.pytemporal_interface.pyunified_validation_system.pyvalidator.pywindow.pywindow.pyi
visualization
__init__.pycascade_viz.pyhierarchy.pyREADME.mdsequence_plotter.py
yang_mills
__init__.pyclosure.pyderivability.pyscaling.pystructural_gap.pyu6_sweep.py
__init__.py__init__.pyi_compat.py_version.py_version.pyialias.pyalias.pyibackend_config.pycache.pycache.pyiexecution.pyexecution.pyiflatten.pyflatten.pyigamma.pygamma.pyiglyph_history.pyglyph_history.pyiglyph_runtime.pyglyph_runtime.pyiimmutable.pyimmutable.pyiinitialization.pyinitialization.pyiio.pyio.pyilocking.pylocking.pyinode.pynode.pyiobservers.pyobservers.pyiontosim.pyontosim.pyipy.typedrng.pyrng.pyisecure_config.pyselector.pyselector.pyisense.pysense.pyistructural.pystructural.pyitokens.pytokens.pyitrace.pytrace.pyitypes.pytypes.pyiunits.pyunits.pyi
tetrad_evaluator.py
.pre-commit-config.yaml.semgrep.yaml.zenodo.jsonARCHITECTURE.mdbandit.yamlCHANGELOG.mdCITATION.cffCONTRIBUTING.mdEMERGENT_CANON_AUDIT.mdEMERGENT_DERIVATION_PLAN.mdLICENSE.mdMakefileMANIFEST.inpyproject.tomlpyrightconfig.jsonPYTORCH_CUDA_INTEGRATION.mdREADME.mdSECURITY.mdTESTING.mdTNFR_Website_Content_Brief.md
FILE: src/tnfr/operators/patterns.py

patterns.py

Advanced structural pattern detection heuristics.

This module provides a lightweight, heuristic implementation of the AdvancedPatternDetector that the test-suite and higher level APIs expect. The detector recognises key structural motifs referenced across the project (therapeutic, educational, bootstrap, etc.) and supplies compact sequence analytics used by documentation tooling and SDK helpers.

The intent is not to be an exhaustive physics model – the canonical grammar remains the single source of truth – but to offer a reproducible mapping from operator sequences to well-known structural archetypes. All heuristics remain traceable to TNFR grammar principles:

  • Domain patterns blend U1–U4 rule signatures (e.g. therapeutic sequences combine reception, self-organisation and closure stabilisers).
  • Meta patterns such as bootstrap and explore capture short pulses that tooling surfaces during guidance flows.
  • Composition analysis reports stabiliser/destabiliser balance and highlights sub-pattern components so downstream code can provide actionable feedback.

Source Code

python
"""Advanced structural pattern detection heuristics.

This module provides a lightweight, heuristic implementation of the
``AdvancedPatternDetector`` that the test-suite and higher level APIs expect.
The detector recognises key structural motifs referenced across the project
(therapeutic, educational, bootstrap, etc.) and supplies compact sequence
analytics used by documentation tooling and SDK helpers.

The intent is not to be an exhaustive physics model – the canonical grammar
remains the single source of truth – but to offer a reproducible mapping from
operator sequences to well-known structural archetypes. All heuristics remain
traceable to TNFR grammar principles:

* Domain patterns blend U1–U4 rule signatures (e.g. therapeutic sequences
    combine reception, self-organisation and closure stabilisers).
* Meta patterns such as ``bootstrap`` and ``explore`` capture short pulses that
    tooling surfaces during guidance flows.
* Composition analysis reports stabiliser/destabiliser balance and highlights
    sub-pattern components so downstream code can provide actionable feedback.
"""

from __future__ import annotations

from collections import Counter
from typing import Iterable, Mapping, Sequence

from ..config.operator_names import (
    COHERENCE,
    CONTRACTION,
    COUPLING,
    DISSONANCE,
    EMISSION,
    EXPANSION,
    MUTATION,
    RECEPTION,
    RECURSIVITY,
    RESONANCE,
    SELF_ORGANIZATION,
    SILENCE,
    TRANSITION,
)
from ..constants.operational import (  # operational pattern-scoring weights (not TNFR physics)
    OPERATORS_CREATIVE_BASE_CANONICAL,
    OPERATORS_EDUCATIONAL_HIGH_CANONICAL,
    OPERATORS_ORGANIZATIONAL_CANONICAL,
    OPERATORS_PATTERN_DESTABILIZER_WEIGHT_CANONICAL,
    OPERATORS_PATTERN_STABILIZER_WEIGHT_CANONICAL,
    OPERATORS_PATTERN_TRANSITION_WEIGHT_CANONICAL,
    OPERATORS_PATTERN_UNIQUE_WEIGHT_CANONICAL,
    OPERATORS_THERAPEUTIC_HIGH_CANONICAL,
    PATTERN_BASE_WEIGHT_CANONICAL,
    PATTERN_BOOTSTRAP_WEIGHT_CANONICAL,
    PATTERN_COMPLEX_WEIGHT_CANONICAL,
    PATTERN_COMPRESS_WEIGHT_CANONICAL,
    PATTERN_CREATIVE_WEIGHT_CANONICAL,
    PATTERN_EDUCATIONAL_WEIGHT_CANONICAL,
    PATTERN_EXPLORE_WEIGHT_CANONICAL,
    PATTERN_LINEAR_WEIGHT_CANONICAL,
    PATTERN_ORGANIZATIONAL_WEIGHT_CANONICAL,
    PATTERN_REGENERATIVE_WEIGHT_CANONICAL,
    PATTERN_STABILIZE_WEIGHT_CANONICAL,
    PATTERN_THERAPEUTIC_WEIGHT_CANONICAL,
)
from .grammar import StructuralPattern

__all__ = ["AdvancedPatternDetector"]

_CANONICAL_ORDER = (
    EMISSION,
    RECEPTION,
    COHERENCE,
    RESONANCE,
    SILENCE,
    DISSONANCE,
    SELF_ORGANIZATION,
    MUTATION,
    TRANSITION,
    COUPLING,
    RECURSIVITY,
    EXPANSION,
    CONTRACTION,
)

# Grammar classification sets — single source of truth (grammar_types, derived
# from the nodal-equation predicates in config.physics_derivation).  Imported
# rather than hardcoded so this heuristic detector cannot drift from the canon.
from .grammar_types import DESTABILIZERS as _DESTABILIZERS
from .grammar_types import STABILIZERS as _STABILIZERS

# Heuristic-only set (NOT a grammar set): operators that read as "intermediate"
# development steps for pattern detection (coupling/resonance are U3, dissonance
# is a destabilizer).  Local to the detector's heuristics.
_INTERMEDIATE = {COUPLING, RESONANCE, DISSONANCE}

_COHERENCE_WEIGHTS = {
    StructuralPattern.THERAPEUTIC: PATTERN_THERAPEUTIC_WEIGHT_CANONICAL,  # = 2.8 (therapeutic boost)
    StructuralPattern.EDUCATIONAL: PATTERN_EDUCATIONAL_WEIGHT_CANONICAL,  # = 0.74 (educational boost)
    StructuralPattern.ORGANIZATIONAL: PATTERN_ORGANIZATIONAL_WEIGHT_CANONICAL,  # = 0.16 (organizational boost)
    StructuralPattern.CREATIVE: PATTERN_CREATIVE_WEIGHT_CANONICAL,  # = 0.74 (same as educational)
    StructuralPattern.REGENERATIVE: PATTERN_REGENERATIVE_WEIGHT_CANONICAL,  # = 0.6 (regenerative boost)
    StructuralPattern.BOOTSTRAP: PATTERN_BOOTSTRAP_WEIGHT_CANONICAL,  # = 1.07 (minimum boost)
    StructuralPattern.EXPLORE: PATTERN_EXPLORE_WEIGHT_CANONICAL,  # Same as bootstrap
    StructuralPattern.STABILIZE: PATTERN_STABILIZE_WEIGHT_CANONICAL,  # = 0.62 (stabilization)
    StructuralPattern.BIFURCATED: PATTERN_BOOTSTRAP_WEIGHT_CANONICAL,  # Same as bootstrap
    StructuralPattern.FRACTAL: PATTERN_EXPLORE_WEIGHT_CANONICAL,  # Same as explore
    StructuralPattern.HIERARCHICAL: PATTERN_BOOTSTRAP_WEIGHT_CANONICAL,  # Same as bootstrap
    StructuralPattern.CYCLIC: PATTERN_BASE_WEIGHT_CANONICAL,  # 1.0 (canonical unit)
    StructuralPattern.COMPLEX: PATTERN_COMPLEX_WEIGHT_CANONICAL,  # Same as stabilize
    StructuralPattern.COMPRESS: PATTERN_COMPRESS_WEIGHT_CANONICAL,  # ≈ 0.9324 (compression)
    StructuralPattern.RESONATE: PATTERN_BOOTSTRAP_WEIGHT_CANONICAL,  # Same as bootstrap
    StructuralPattern.LINEAR: PATTERN_LINEAR_WEIGHT_CANONICAL,  # = 0.18 (linear minimum)
    StructuralPattern.BASIC_LEARNING: PATTERN_BASE_WEIGHT_CANONICAL,  # 1.0 (canonical unit)
    StructuralPattern.DEEP_LEARNING: PATTERN_EXPLORE_WEIGHT_CANONICAL,  # Same as explore
    StructuralPattern.EXPLORATORY_LEARNING: PATTERN_EXPLORE_WEIGHT_CANONICAL,  # Same as explore
    StructuralPattern.CONSOLIDATION_CYCLE: PATTERN_COMPRESS_WEIGHT_CANONICAL,  # Same as compression
    StructuralPattern.ADAPTIVE_MUTATION: PATTERN_BASE_WEIGHT_CANONICAL,  # 1.0 (canonical unit)
    StructuralPattern.UNKNOWN: PATTERN_LINEAR_WEIGHT_CANONICAL
    * 0.5,  # Reduced structural minimum
}


def _canonicalise(sequence: Sequence[str]) -> list[str]:
    """Return canonical lower-case operator tokens."""

    return [str(token).lower() for token in sequence]


class AdvancedPatternDetector:
    """Heuristic detector for high-level structural patterns.

    The detector prefers domain/metabolic patterns over baseline structural
    classifications so that the rich diagnostic stories remain available while
    still falling back to generic labels (``LINEAR``, ``FRACTAL`` …) when the
    sequence does not trigger a specialised signature.
    """

    def __init__(self) -> None:  # pragma: no cover - trivial initialiser
        self._cache: dict[tuple[str, ...], StructuralPattern] = {}

    # ------------------------------------------------------------------
    # Public API
    # ------------------------------------------------------------------

    def detect_pattern(self, sequence: Sequence[str]) -> StructuralPattern:
        canonical = tuple(_canonicalise(sequence))
        if not canonical:
            return StructuralPattern.UNKNOWN

        cached = self._cache.get(canonical)
        if cached is not None:
            return cached

        # TNFR Physics Priority: Domain patterns have priority over structural
        # patterns to capture rich diagnostic information (therapeutic, etc.)
        pattern = (
            self._detect_domain_pattern(canonical)
            or self._detect_learning_pattern(canonical)
            or self._detect_meta_pattern(canonical)
            or self._detect_structural_pattern(canonical)
            or StructuralPattern.UNKNOWN
        )
        self._cache[canonical] = pattern
        return pattern

    def analyze_sequence_composition(
        self, sequence: Sequence[str]
    ) -> Mapping[str, object]:
        canonical = _canonicalise(sequence)
        pattern = self.detect_pattern(canonical)
        components = self._identify_components(canonical)
        complexity_score = self._complexity_score(canonical)
        suitability = self._domain_suitability(canonical)
        health = self._structural_health(canonical)
        pattern_scores = self._pattern_scores(canonical, pattern)
        coherence_weights = self._coherence_weights()
        weighted_scores = {
            name: round(
                pattern_scores[name] * coherence_weights.get(name, 1.0),
                4,
            )
            for name in pattern_scores
        }

        return {
            "sequence": tuple(canonical),
            "primary_pattern": pattern.value,
            "pattern_scores": pattern_scores,
            "weighted_scores": weighted_scores,
            "coherence_weights": coherence_weights,
            "components": components,
            "complexity_score": complexity_score,
            "domain_suitability": suitability,
            "structural_health": health,
        }

    # ------------------------------------------------------------------
    # Domain-specific detection (highest priority)
    # ------------------------------------------------------------------

    def _detect_domain_pattern(self, seq: Sequence[str]) -> StructuralPattern | None:
        # Defer to STABILIZE only for short (<7) or emission-led closures so
        # longer reception-led therapeutic sequences still classify correctly.
        if self._is_stabilize(seq) and (len(seq) <= 6 or (seq and seq[0] == EMISSION)):
            return None
        if self._is_therapeutic(seq):
            return StructuralPattern.THERAPEUTIC
        # Prefer CREATIVE over EDUCATIONAL when both could match
        if self._is_creative(seq):
            return StructuralPattern.CREATIVE
        if self._is_educational(seq):
            return StructuralPattern.EDUCATIONAL
        if self._is_organizational(seq):
            return StructuralPattern.ORGANIZATIONAL
        if self._is_regenerative(seq):
            return StructuralPattern.REGENERATIVE
        return None

    def _detect_learning_pattern(self, seq: Sequence[str]) -> StructuralPattern | None:
        # Do not classify as BASIC/DEEP/EXPLORATORY learning when explicit
        # stabilization closure (IL→{SHA|RA}) is present; prefer STABILIZE.
        if self._is_basic_learning(seq):
            return StructuralPattern.BASIC_LEARNING
        if self._is_deep_learning(seq):
            return StructuralPattern.DEEP_LEARNING
        if self._is_exploratory_learning(seq):
            return StructuralPattern.EXPLORATORY_LEARNING
        if self._is_consolidation_cycle(seq):
            return StructuralPattern.CONSOLIDATION_CYCLE
        if self._is_adaptive_mutation(seq):
            return StructuralPattern.ADAPTIVE_MUTATION
        return None

    def _detect_meta_pattern(self, seq: Sequence[str]) -> StructuralPattern | None:
        if self._is_bootstrap(seq):
            return StructuralPattern.BOOTSTRAP
        if self._is_stabilize(seq):
            return StructuralPattern.STABILIZE
        # If a strong structural signature like FRACTAL is present (e.g.,
        # RECURSIVITY) in a longer sequence, prefer structural detection over
        # generic EXPLORE labeling.
        if self._is_explore(seq) and not self._is_fractal(seq):
            return StructuralPattern.EXPLORE
        return None

    def _detect_structural_pattern(
        self, seq: Sequence[str]
    ) -> StructuralPattern | None:
        if self._is_bifurcated(seq):
            return StructuralPattern.BIFURCATED
        if self._is_fractal(seq):
            return StructuralPattern.FRACTAL
        if self._is_hierarchical(seq):
            return StructuralPattern.HIERARCHICAL
        if self._is_cyclic(seq):
            return StructuralPattern.CYCLIC
        if self._is_complex(seq):
            return StructuralPattern.COMPLEX
        if self._is_compress(seq):
            return StructuralPattern.COMPRESS
        if self._is_resonate(seq):
            return StructuralPattern.RESONATE
        if self._is_linear(seq):
            return StructuralPattern.LINEAR
        return None

    # ------------------------------------------------------------------
    # Heuristic helpers
    # ------------------------------------------------------------------

    @staticmethod
    def _count(sequence: Sequence[str], members: Iterable[str]) -> int:
        member_set = set(members)
        return sum(1 for token in sequence if token in member_set)

    @staticmethod
    def _contains(sequence: Sequence[str], *tokens: str) -> bool:
        view = set(sequence)
        return all(token in view for token in tokens)

    @staticmethod
    def _pairwise(sequence: Sequence[str]) -> Iterable[tuple[str, str]]:
        for i in range(len(sequence) - 1):
            yield sequence[i], sequence[i + 1]

    # Domain pattern heuristics

    def _is_therapeutic(self, seq: Sequence[str]) -> bool:
        # Therapeutic: EN + AL + IL + THOL, with OZ pulse and stable ending
        has_core = self._contains(
            seq, RECEPTION, EMISSION, COHERENCE, SELF_ORGANIZATION
        )
        has_dissonance = DISSONANCE in seq
        has_closure = bool(seq) and seq[-1] in {SILENCE, COHERENCE, TRANSITION}
        return has_core and has_dissonance and has_closure

    def _is_educational(self, seq: Sequence[str]) -> bool:
        if not self._contains(seq, EXPANSION, DISSONANCE, MUTATION):
            return False
        # Require ordered progression: VAL → OZ → ZHIR
        try:
            i_val = seq.index(EXPANSION)
            i_oz = seq.index(DISSONANCE)
            i_zhir = seq.index(MUTATION)
        except ValueError:
            return False
        return i_val < i_oz < i_zhir

    def _is_organizational(self, seq: Sequence[str]) -> bool:
        return self._contains(
            seq,
            TRANSITION,
            COUPLING,
            RESONANCE,
            SELF_ORGANIZATION,
            RECURSIVITY,
        )

    def _is_creative(self, seq: Sequence[str]) -> bool:
        return SILENCE in seq and self._contains(
            seq,
            EXPANSION,
            MUTATION,
            SELF_ORGANIZATION,
            RESONANCE,
        )

    def _is_regenerative(self, seq: Sequence[str]) -> bool:
        required = {
            COHERENCE,
            RESONANCE,
            EXPANSION,
            SILENCE,
            TRANSITION,
            EMISSION,
            RECEPTION,
            COUPLING,
        }
        return required.issubset(seq)

    # Learning pattern heuristics

    def _is_basic_learning(self, seq: Sequence[str]) -> bool:
        if tuple(seq) != (EMISSION, RECEPTION, COHERENCE, SILENCE):
            return False
        # If also matching stabilization closure semantics, prefer STABILIZE.
        if self._is_stabilize(seq):
            return False
        return True

    def _is_deep_learning(self, seq: Sequence[str]) -> bool:
        # Deep learning: comprehensive learning with substantive sequence
        has_core = self._contains(
            seq,
            EMISSION,
            RECEPTION,
            DISSONANCE,
            SELF_ORGANIZATION,
            COHERENCE,
        )
        # Require longer sequence to distinguish from basic hierarchical
        return has_core and len(seq) >= 9

    def _is_exploratory_learning(self, seq: Sequence[str]) -> bool:
        return self._contains(
            seq,
            DISSONANCE,
            SELF_ORGANIZATION,
            RESONANCE,
            COHERENCE,
        )

    def _is_consolidation_cycle(self, seq: Sequence[str]) -> bool:
        return tuple(seq[-2:]) == (COHERENCE, RECURSIVITY)

    def _is_adaptive_mutation(self, seq: Sequence[str]) -> bool:
        has_core = self._contains(seq, DISSONANCE, MUTATION)
        requires_handler = SELF_ORGANIZATION in seq
        return has_core and requires_handler and seq[-1] == TRANSITION

    # Meta-pattern heuristics

    def _is_bootstrap(self, seq: Sequence[str]) -> bool:
        return tuple(seq[:3]) == (EMISSION, COUPLING, COHERENCE) and len(seq) <= 5

    def _is_explore(self, seq: Sequence[str]) -> bool:
        # Explore: at least two destabilizers without THOL dominance
        has_self_org = SELF_ORGANIZATION in seq
        destabilizer_count = self._count(seq, {DISSONANCE, EXPANSION, MUTATION})
        if has_self_org:
            return False
        if self._is_simple_bifurcation(seq):
            return False
        return destabilizer_count >= 2

    def _is_simple_bifurcation(self, seq: Sequence[str]) -> bool:
        """Check if sequence is a simple bifurcation pattern."""
        # Simple bifurcation: OZ with {ZHIR|NUL} and limited complexity
        has_trigger = DISSONANCE in seq and (MUTATION in seq or CONTRACTION in seq)
        return has_trigger and EXPANSION not in seq and len(seq) <= 7

    def _is_stabilize(self, seq: Sequence[str]) -> bool:
        # Stabilize: IL then closure (IL→SHA|RA), short seq (<=6), no OZ+ZHIR
        if len(seq) >= 2 and tuple(seq[-2:]) in {
            (COHERENCE, SILENCE),
            (COHERENCE, RESONANCE),
        }:
            if DISSONANCE in seq and MUTATION in seq:
                return False
            # Allow slightly longer sequences (<=7) to count as stabilize
            # when they present a single destabilizer but end coherently.
            return len(seq) <= 7
        return False

    # Structural heuristics

    def _is_bifurcated(self, seq: Sequence[str]) -> bool:
        # Bifurcation: OZ→{ZHIR|NUL} but not hierarchical (THOL primary)
        has_bifurcation = DISSONANCE in seq and (MUTATION in seq or CONTRACTION in seq)
        if not has_bifurcation:
            return False
        if SELF_ORGANIZATION in seq:
            return False
        # Require adjacency for simple bifurcated classification
        for a, b in self._pairwise(seq):
            if a == DISSONANCE and b in {MUTATION, CONTRACTION}:
                return True
        return False

    def _is_fractal(self, seq: Sequence[str]) -> bool:
        return RECURSIVITY in seq or (TRANSITION in seq and COUPLING in seq)

    def _is_hierarchical(self, seq: Sequence[str]) -> bool:
        return SELF_ORGANIZATION in seq

    def _is_cyclic(self, seq: Sequence[str]) -> bool:
        silence_cycle = (
            SILENCE in seq and EMISSION in seq and seq.index(SILENCE) < len(seq) - 1
        )
        nav_cycle = seq.count(TRANSITION) >= 2
        return silence_cycle or nav_cycle

    def _is_complex(self, seq: Sequence[str]) -> bool:
        unique = len(set(seq))
        return len(seq) >= 6 and unique >= 5

    def _is_compress(self, seq: Sequence[str]) -> bool:
        return CONTRACTION in seq

    def _is_resonate(self, seq: Sequence[str]) -> bool:
        return RESONANCE in seq and seq.count(RESONANCE) >= 2

    def _is_linear(self, seq: Sequence[str]) -> bool:
        allowed = {
            EMISSION,
            RECEPTION,
            COHERENCE,
            RESONANCE,
            SILENCE,
            TRANSITION,
        }
        return all(token in allowed for token in seq)

    # Composition helpers

    def _identify_components(self, seq: Sequence[str]) -> set[str]:
        components: set[str] = set()
        # Identify bootstrap as a component when prefix matches
        if len(seq) >= 3 and tuple(seq[:3]) == (EMISSION, COUPLING, COHERENCE):
            components.add("bootstrap")
        if self._is_explore(seq):
            components.add("explore")
        else:
            # Also identify contiguous OZ→ZHIR→IL as an explore component
            for a, b in self._pairwise(seq):
                pass
            for idx in range(len(seq) - 2):
                if (
                    seq[idx] == DISSONANCE
                    and seq[idx + 1] == MUTATION
                    and seq[idx + 2] == COHERENCE
                ):
                    components.add("explore")
                    break
        # Recognise a stabilization component whenever IL is immediately
        # followed by {SHA|RA} anywhere in the sequence, regardless of
        # overall length or presence of destabilizers.
        for a, b in self._pairwise(seq):
            if a == COHERENCE and b in {SILENCE, RESONANCE}:
                components.add("stabilize")
                break
        if self._contains(seq, RECURSIVITY):
            components.add("fractal")
        if self._contains(seq, SELF_ORGANIZATION):
            components.add("hierarchical")
        if self._contains(seq, RESONANCE):
            components.add("resonance")
        return components

    def _complexity_score(self, seq: Sequence[str]) -> float:
        if not seq:
            return 0.0
        unique = len(set(seq))
        transitions = sum(1 for i in range(len(seq) - 1) if seq[i] != seq[i + 1])
        stabilisers = self._count(seq, _STABILIZERS)
        destabilisers = self._count(seq, _DESTABILIZERS)
        raw_score = (
            len(seq)
            + OPERATORS_PATTERN_UNIQUE_WEIGHT_CANONICAL * unique
            + OPERATORS_PATTERN_TRANSITION_WEIGHT_CANONICAL * transitions
        )
        raw_score += (
            OPERATORS_PATTERN_DESTABILIZER_WEIGHT_CANONICAL * destabilisers
            + OPERATORS_PATTERN_STABILIZER_WEIGHT_CANONICAL * stabilisers
        )
        return min(1.0, raw_score / 12.0)

    def _domain_suitability(self, seq: Sequence[str]) -> dict[str, float]:
        scores = {
            "therapeutic": 0.0,
            "educational": 0.0,
            "organizational": 0.0,
            "creative": 0.0,
            "regenerative": 0.0,
        }
        if self._is_therapeutic(seq):
            scores["therapeutic"] = OPERATORS_THERAPEUTIC_HIGH_CANONICAL
        if self._is_educational(seq):
            scores["educational"] = OPERATORS_EDUCATIONAL_HIGH_CANONICAL
        if self._contains(seq, EXPANSION) and SELF_ORGANIZATION in seq:
            scores["creative"] = max(
                scores["creative"], OPERATORS_CREATIVE_BASE_CANONICAL
            )
        if self._is_organizational(seq):
            scores["organizational"] = OPERATORS_ORGANIZATIONAL_CANONICAL
        if self._is_regenerative(seq):
            scores["regenerative"] = 0.9
        if DISSONANCE in seq and COHERENCE in seq:
            scores["therapeutic"] = max(scores["therapeutic"], 0.55)
        if MUTATION in seq:
            scores["educational"] = max(scores["educational"], 0.45)
        if RECURSIVITY in seq:
            scores["organizational"] = max(scores["organizational"], 0.4)
        return scores

    def _structural_health(self, seq: Sequence[str]) -> dict[str, object]:
        counter = Counter(seq)
        stabilisers = self._count(seq, _STABILIZERS)
        destabilisers = self._count(seq, _DESTABILIZERS)
        balance = stabilisers - destabilisers
        has_closure = bool(seq) and seq[-1] in {
            SILENCE,
            TRANSITION,
            RECURSIVITY,
            DISSONANCE,
        }
        return {
            "stabilizer_count": stabilisers,
            "destabilizer_count": destabilisers,
            "balance": balance,
            "has_closure": has_closure,
            "frequency": {
                token: counter[token]
                for token in _CANONICAL_ORDER
                if counter[token] > 0
            },
        }

    def _pattern_scores(
        self,
        seq: Sequence[str],
        primary: StructuralPattern,
    ) -> dict[str, float]:
        def assign(pattern: StructuralPattern, value: float) -> None:
            if value <= 0.0:
                return
            key = pattern.value
            current = scores.get(key, 0.0)
            scores[key] = round(max(current, value), 4)

        scores: dict[str, float] = {}

        # Domain patterns carry highest confidence when matched
        if self._is_therapeutic(seq):
            assign(StructuralPattern.THERAPEUTIC, 0.9)
        if self._is_educational(seq):
            assign(StructuralPattern.EDUCATIONAL, 0.85)
        if self._is_organizational(seq):
            assign(StructuralPattern.ORGANIZATIONAL, 0.8)
        if self._is_creative(seq):
            assign(StructuralPattern.CREATIVE, 0.8)
        if self._is_regenerative(seq):
            assign(StructuralPattern.REGENERATIVE, 0.9)

        # Learning strata
        if self._is_basic_learning(seq):
            assign(StructuralPattern.BASIC_LEARNING, 0.7)
        if self._is_deep_learning(seq):
            assign(StructuralPattern.DEEP_LEARNING, 0.8)
        if self._is_exploratory_learning(seq):
            assign(StructuralPattern.EXPLORATORY_LEARNING, 0.75)
        if self._is_consolidation_cycle(seq):
            assign(StructuralPattern.CONSOLIDATION_CYCLE, 0.6)
        if self._is_adaptive_mutation(seq):
            assign(StructuralPattern.ADAPTIVE_MUTATION, 0.7)

        # Meta and structural patterns
        if self._is_bootstrap(seq):
            assign(StructuralPattern.BOOTSTRAP, 0.7)
        if self._is_explore(seq):
            assign(StructuralPattern.EXPLORE, 0.65)
        if self._is_stabilize(seq):
            assign(StructuralPattern.STABILIZE, 0.7)
        if self._is_bifurcated(seq):
            assign(StructuralPattern.BIFURCATED, 0.6)
        if self._is_fractal(seq):
            assign(StructuralPattern.FRACTAL, 0.65)
        if self._is_hierarchical(seq):
            assign(StructuralPattern.HIERARCHICAL, 0.6)
        if self._is_cyclic(seq):
            assign(StructuralPattern.CYCLIC, 0.55)
        if self._is_complex(seq):
            assign(StructuralPattern.COMPLEX, 0.6)
        if self._is_compress(seq):
            assign(StructuralPattern.COMPRESS, 0.5)
        if self._is_resonate(seq):
            assign(StructuralPattern.RESONATE, 0.55)
        if self._is_linear(seq):
            assign(StructuralPattern.LINEAR, 0.5)

        # Ensure the detected primary pattern is represented
        if primary is not StructuralPattern.UNKNOWN:
            baseline = (
                0.75
                if primary
                in {
                    StructuralPattern.THERAPEUTIC,
                    StructuralPattern.REGENERATIVE,
                    StructuralPattern.EDUCATIONAL,
                }
                else 0.6
            )
            assign(primary, baseline)
        elif not scores:
            scores[StructuralPattern.UNKNOWN.value] = 0.2

        return scores

    def _coherence_weights(self) -> dict[str, float]:
        return {
            pattern.value: _COHERENCE_WEIGHTS.get(pattern, 1.0)
            for pattern in StructuralPattern
        }