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: benchmarks/kuramoto_farey_bridge.py

kuramoto_farey_bridge.py

Camino 15 -- the DYNAMICAL half of the emergence of numbers.

CONTEXT (where this sits in the emergence-of-numbers line)

Camino 9 (paley_bridge.py) and Camino 14 (directed_paley_bridge.py) made the PRIMES emerge from the STATIC spectrum of a fixed graph: a self-adjoint Paley gap for p == 1 (mod 4) and a skew Paley tournament for p == 3 (mod 4). That is the "estructura" half. The user asked for "estructura Y dinamica" -- so this harness is the "dinamica" half: numbers emerging from the TIME EVOLUTION of the nodal phase, not from a frozen eigenvalue list.

The carrier is the nodal equation reduced to one phase oscillator driven by a periodic structural pressure -- the canonical sine circle map:

text
    theta_{n+1} = theta_n + Omega - (K / 2pi) sin(2pi theta_n)

Here Omega = nu_f (the bare structural frequency / detuning) and the term -(K/2pi) sin(2pi theta) = DNFR (the coupling-induced reorganisation pressure), so the map is exactly the single-node Kuramoto reduction of dEPI/dt = nu_f * DNFR. The emergent quantity is the rotation number

text
    rho = lim_{N->inf} (theta_N - theta_0) / N .

THESIS

  1. RATIONALS EMERGE as the mode-locked rotation numbers. Over an interval of Omega the dynamics locks onto rho = p/q (an Arnold tongue / a plateau of the devil's staircase). We read rho off the iteration and RECOVER p/q with a continued-fraction identifier -- a genuine rationals-OUT emergence, the dynamical twin of Camino 9/14's primes-OUT spectral emergence.

  2. The FAREY / STERN-BROCOT TREE organises the tongues. Between two Farey neighbours p1/q1 and p2/q2 (|p1 q2 - p2 q1| = 1) the widest plateau sits at the mediant (p1+p2)/(q1+q2), and the tongue width strictly shrinks as the denominator grows along the Fibonacci path 1/2, 2/3, 3/5, 5/8, ...

  3. phi EMERGES as the most-irrational number: the Fibonacci ratios F_n / F_{n+1} -> 1/phi = (sqrt5 - 1)/2 are the convergents of the continued fraction [0; 1, 1, 1, ...] (all 1s, the slowest to converge, so phi saturates the Hurwitz bound: sqrt5 * F_{n+1}^2 * |F_n/F_{n+1} - 1/phi| -> 1). The limit IS the golden ratio (1+sqrt5)/2.

WALL CONNECTION

The lock/no-lock split of the DYNAMICS mirrors the real/phase split of the SPECTRUM (Camino 14). Locked rationals = the reachable, structured half (= range(R_inf), the smooth half of the REMESH-inf projection); the un-locked irrationals -- with phi the most protected, the LAST to lock -- play the residue role (= ker(R_inf) = Fix(G)^perp), the dynamical analogue of the oscillatory S(T) = (1/pi) arg zeta(1/2 + iT).

HONEST SCOPE (this closes NOTHING)

  1. phi is reachable as a LIMIT of Fibonacci rationals -- an accumulation boundary, a SOFT residue -- NOT a hard orthogonal residue. S(T) lives in ker(R_inf) and is genuinely unreachable; phi is only the un-lockable limit of reachable rationals. The analogy is structural, not literal.
  2. The dynamics yields a DISCRETE set of rationals plus ONE distinguished irrational phi; it does not yield the continuum and proves nothing about the zeta zeros. G4 = RH stays OPEN.
  3. R remains the assumed continuum and pi the one assumed structural scale; phi here EMERGES from the dynamics, it is not an assumed constant.

So Camino 15 EXTENDS the emergence-of-numbers line from the spectral side to the dynamical side (rationals + phi out of time evolution) and CONNECTS the lock/no-lock split to the wall -- but it does not move the wall.

Cross-checks the order parameter against the canonical tnfr.gamma.kuramoto_R_psi and the golden ratio against the golden-ratio limit (1+√5)/2.

Run: python benchmarks/kuramoto_farey_bridge.py

Source Code

python
"""Camino 15 -- the DYNAMICAL half of the emergence of numbers.

CONTEXT (where this sits in the emergence-of-numbers line)
----------------------------------------------------------
Camino 9 (``paley_bridge.py``) and Camino 14 (``directed_paley_bridge.py``)
made the PRIMES emerge from the STATIC spectrum of a fixed graph: a
self-adjoint Paley gap for p == 1 (mod 4) and a skew Paley tournament for
p == 3 (mod 4).
That is the "estructura" half. The user asked for "estructura Y dinamica" --
so this harness is the "dinamica" half: numbers emerging from the TIME
EVOLUTION of the nodal phase, not from a frozen eigenvalue list.

The carrier is the nodal equation reduced to one phase oscillator driven by a
periodic structural pressure -- the canonical sine circle map:

        theta_{n+1} = theta_n + Omega - (K / 2pi) sin(2pi theta_n)

Here Omega = nu_f (the bare structural frequency / detuning) and the term
-(K/2pi) sin(2pi theta) = DNFR (the coupling-induced reorganisation pressure),
so the map is exactly the single-node Kuramoto reduction of
``dEPI/dt = nu_f * DNFR``. The emergent quantity is the rotation number

        rho = lim_{N->inf} (theta_N - theta_0) / N .

THESIS
------
1. RATIONALS EMERGE as the mode-locked rotation numbers. Over an interval of
   Omega the dynamics locks onto rho = p/q (an Arnold tongue / a plateau of the
   devil's staircase). We read rho off the iteration and RECOVER p/q with a
   continued-fraction identifier -- a genuine rationals-OUT emergence, the
   dynamical twin of Camino 9/14's primes-OUT spectral emergence.

2. The FAREY / STERN-BROCOT TREE organises the tongues. Between two Farey
   neighbours p1/q1 and p2/q2 (|p1 q2 - p2 q1| = 1) the widest plateau sits at
   the mediant (p1+p2)/(q1+q2), and the tongue width strictly shrinks as the
   denominator grows along the Fibonacci path 1/2, 2/3, 3/5, 5/8, ...

3. phi EMERGES as the most-irrational number: the Fibonacci ratios
   F_n / F_{n+1} -> 1/phi = (sqrt5 - 1)/2 are the convergents of the continued
   fraction [0; 1, 1, 1, ...] (all 1s, the slowest to converge, so phi
   saturates the Hurwitz bound: sqrt5 * F_{n+1}^2 * |F_n/F_{n+1} - 1/phi|
   -> 1). The limit IS the golden ratio (1+sqrt5)/2.

WALL CONNECTION
---------------
The lock/no-lock split of the DYNAMICS mirrors the real/phase split of the
SPECTRUM (Camino 14). Locked rationals = the reachable, structured half
(= range(R_inf), the smooth half of the REMESH-inf projection); the un-locked
irrationals -- with phi the most protected, the LAST to lock -- play the
residue role (= ker(R_inf) = Fix(G)^perp), the dynamical analogue of the
oscillatory S(T) = (1/pi) arg zeta(1/2 + iT).

HONEST SCOPE (this closes NOTHING)
----------------------------------
1. phi is reachable as a LIMIT of Fibonacci rationals -- an accumulation
   boundary, a SOFT residue -- NOT a hard orthogonal residue. S(T) lives in
   ker(R_inf) and is genuinely unreachable; phi is only the un-lockable limit
   of reachable rationals. The analogy is structural, not literal.
2. The dynamics yields a DISCRETE set of rationals plus ONE distinguished
   irrational phi; it does not yield the continuum and proves nothing about
   the zeta zeros. G4 = RH stays OPEN.
3. R remains the assumed continuum and pi the one assumed structural scale;
   phi here EMERGES from the dynamics, it is not an assumed constant.

So Camino 15 EXTENDS the emergence-of-numbers line from the spectral side to
the dynamical side (rationals + phi out of time evolution) and CONNECTS the
lock/no-lock split to the wall -- but it does not move the wall.

Cross-checks the order parameter against the canonical
``tnfr.gamma.kuramoto_R_psi`` and the golden ratio against
the golden-ratio limit (1+√5)/2.

Run:
    python benchmarks/kuramoto_farey_bridge.py
"""

from __future__ import annotations

import math
import os
import sys
from fractions import Fraction

import numpy as np

_HERE = os.path.dirname(os.path.abspath(__file__))
if _HERE not in sys.path:
    sys.path.insert(0, _HERE)
_SRC = os.path.abspath(os.path.join(_HERE, "..", "src"))
if _SRC not in sys.path:
    sys.path.insert(0, _SRC)

# golden ratio (1+√5)/2 — the emergent last-to-lock limit, NOT a TNFR structural constant
_CANON_PHI = (1.0 + 5.0 ** 0.5) / 2.0
_HAVE_CANON_PHI = False

try:  # canonical Kuramoto order parameter R = |mean exp(i theta)|
    from tnfr.gamma import kuramoto_R_psi  # noqa: E402

    _HAVE_KURAMOTO = True
except Exception:  # pragma: no cover
    _HAVE_KURAMOTO = False

try:  # networkx carries the theta attribute kuramoto_R_psi reads
    import networkx as nx  # noqa: E402

    _HAVE_NX = True
except Exception:  # pragma: no cover
    _HAVE_NX = False

PHI = float(_CANON_PHI)
PHI_INV = PHI - 1.0  # 1/phi = (sqrt5 - 1)/2 = 0.6180339887...

TOL = 1e-9
_RHO_ITERS = 20000  # iterations for a precise rotation number
_RHO_TRANS = 2000  # transient discarded before averaging
_SWEEP_ITERS = 6000  # cheaper iters for grid/slope sweeps
_LOCK_TOL = 2e-3  # |rho - p/q| below this counts as locked
_PLATEAU_DELTA = 5e-4  # Omega offset for the flat-plateau check
K_CRIT = 1.0  # critical coupling: complete staircase
K_SUB = 0.5  # sub-critical: incomplete, phi un-locked


# --------------------------------------------------------------------------- #
# The sine circle map = single-node Kuramoto reduction of dEPI/dt = nu_f*DNFR.
# --------------------------------------------------------------------------- #
def circle_map_rho(
    omega: float,
    k: float,
    iters: int = _RHO_ITERS,
    trans: int = _RHO_TRANS,
) -> float:
    """Rotation number of the lifted sine circle map (no wrapping)."""
    two_pi = 2.0 * math.pi
    factor = k / two_pi
    theta = 0.0
    for _ in range(trans):
        theta += omega - factor * math.sin(two_pi * theta)
    start = theta
    for _ in range(iters):
        theta += omega - factor * math.sin(two_pi * theta)
    return (theta - start) / iters


def sweep_rho(
    omegas: np.ndarray,
    k: float,
    iters: int = _SWEEP_ITERS,
    trans: int = _RHO_TRANS,
) -> np.ndarray:
    """Vectorised rotation number over a grid of detunings ``omegas``."""
    two_pi = 2.0 * np.pi
    factor = k / two_pi
    theta = np.zeros_like(omegas, dtype=float)
    for _ in range(trans):
        theta += omegas - factor * np.sin(two_pi * theta)
    start = theta.copy()
    for _ in range(iters):
        theta += omegas - factor * np.sin(two_pi * theta)
    return (theta - start) / iters


def identify_rational(rho: float, max_den: int = 64) -> tuple[Fraction, float]:
    """Recover p/q from a measured rotation number (number-OUT)."""
    fr = Fraction(rho).limit_denominator(max_den)
    return fr, abs(rho - float(fr))


def is_plateau(omega: float, k: float, target: float) -> bool:
    """True if rho is flat (locked) at ``omega`` (rho(om +/- d) == target)."""
    lo = circle_map_rho(omega - _PLATEAU_DELTA, k)
    hi = circle_map_rho(omega + _PLATEAU_DELTA, k)
    return abs(lo - target) < _LOCK_TOL and abs(hi - target) < _LOCK_TOL


def tongue_width(
    p: int,
    q: int,
    k: float,
    n: int = 400,
    iters: int = _SWEEP_ITERS,
) -> float:
    """Omega-width of the p/q Arnold tongue (the locked plateau)."""
    center = p / q
    half = min(0.12, 0.6 / (q * q))  # tongues shrink fast with q
    om = np.linspace(center - half, center + half, n)
    rho = sweep_rho(om, k, iters=iters)
    locked = np.abs(rho - p / q) < _LOCK_TOL
    d_om = float(om[1] - om[0])
    return float(locked.sum()) * d_om


def locked_measure(
    k: float,
    n_grid: int = 800,
    iters: int = _SWEEP_ITERS,
) -> float:
    """Fraction of Omega in [0, 1] that sits on a rational plateau."""
    om = np.linspace(0.0, 1.0, n_grid)
    rho = sweep_rho(om, k, iters=iters)
    d_om = om[1] - om[0]
    slope = np.abs(np.diff(rho)) / d_om
    return float(np.mean(slope < 0.1))  # slope ~0 locked, ~1 drifting


def invert_rho(target: float, k: float, n_bis: int = 60) -> float:
    """Bisection inverse of the monotone staircase: Omega with rho=target."""
    lo, hi = 0.0, 1.0
    for _ in range(n_bis):
        mid = 0.5 * (lo + hi)
        if circle_map_rho(mid, k) < target:
            lo = mid
        else:
            hi = mid
    return 0.5 * (lo + hi)


def harvest_plateaus(
    omegas: np.ndarray,
    rho: np.ndarray,
    slope_thr: float = 0.05,
    min_len: int = 4,
    max_den: int = 32,
) -> dict[Fraction, float]:
    """Harvest locked plateaus from a sweep and recover their rationals.

    The Arnold tongues of the sine circle map are NOT centred at Omega = p/q
    (only the symmetric 0, 1/2, 1 are), so instead of probing Omega = p/q we
    scan the devil's staircase, find the flat runs (slope ~ 0 = locked), and
    read p/q off each plateau with ``limit_denominator`` -- a genuine
    rationals-OUT recovery. Returns {fraction: worst |rho - p/q|}.
    """
    d_om = float(omegas[1] - omegas[0])
    slope = np.abs(np.diff(rho)) / d_om
    flat = slope < slope_thr
    recovered: dict[Fraction, float] = {}
    i, n = 0, len(flat)
    while i < n:
        if not flat[i]:
            i += 1
            continue
        j = i
        while j < n and flat[j]:
            j += 1
        if j - i + 1 >= min_len:
            val = float(np.median(rho[i : j + 1]))
            fr, err = identify_rational(val, max_den=max_den)
            if err < _LOCK_TOL:
                recovered[fr] = max(recovered.get(fr, 0.0), err)
        i = j + 1
    return recovered


# --------------------------------------------------------------------------- #
# Farey / Stern-Brocot arithmetic (machine-exact via Fraction).
# --------------------------------------------------------------------------- #
def farey_mediant(f1: Fraction, f2: Fraction) -> Fraction:
    """The Farey mediant (p1+p2)/(q1+q2) (no reduction in Stern-Brocot)."""
    return Fraction(
        f1.numerator + f2.numerator,
        f1.denominator + f2.denominator,
    )


def is_farey_neighbour(f1: Fraction, f2: Fraction) -> bool:
    """True iff |p1 q2 - p2 q1| = 1 (adjacent in some Farey sequence)."""
    return abs(f1.numerator * f2.denominator - f2.numerator * f1.denominator) == 1


def lowest_denom_between(f1: Fraction, f2: Fraction) -> Fraction:
    """Smallest-denominator fraction strictly between f1 and f2."""
    lo, hi = (f1, f2) if f1 < f2 else (f2, f1)
    bound = f1.denominator + f2.denominator
    for b in range(1, bound + 1):
        a = math.floor(lo * b) + 1
        fr = Fraction(a, b)
        if lo < fr < hi:
            return fr  # first (smallest) b wins
    return farey_mediant(f1, f2)


def fibonacci(n: int) -> list[int]:
    """First ``n`` Fibonacci numbers F_1=F_2=1."""
    f = [1, 1]
    while len(f) < n:
        f.append(f[-1] + f[-2])
    return f[:n]


def continued_fraction(x: float, n_terms: int) -> list[int]:
    """Continued-fraction coefficients of ``x``."""
    terms: list[int] = []
    for _ in range(n_terms):
        a = math.floor(x)
        terms.append(a)
        frac = x - a
        if frac < 1e-12:
            break
        x = 1.0 / frac
    return terms


def kuramoto_order_parameter(theta_turns: np.ndarray) -> tuple[float, str]:
    """Canonical R = |mean exp(i theta)| via tnfr.gamma when available."""
    theta_rad = 2.0 * np.pi * theta_turns
    direct = float(np.abs(np.mean(np.exp(1j * theta_rad))))
    if _HAVE_KURAMOTO and _HAVE_NX:
        G = nx.Graph()
        for i, th in enumerate(theta_rad):
            G.add_node(i, theta=float(th))
        R, _psi = kuramoto_R_psi(G)
        return float(R), f"{direct:.2e}"
    return direct, f"{direct:.2e}"


# --------------------------------------------------------------------------- #
# TEST 1 -- rationals EMERGE as mode-locked rotation numbers (number-OUT)
# --------------------------------------------------------------------------- #
def test_rationals_emerge_as_lockings() -> bool:
    print("=" * 78)
    print("TEST 1 -- rationals emerge as the mode-locked rotation")
    print("          numbers of the nodal phase dynamics: we harvest the")
    print("          devil's-staircase plateaus and RECOVER p/q (number-OUT)")
    print("=" * 78)

    # Scan the staircase at criticality and harvest every locked plateau.
    # We do NOT tell the dynamics where p/q lives: we read rho off the
    # iteration, detect the flat runs, and recover the rationals blind.
    omegas = np.linspace(0.0, 1.0, 2500)
    rho = sweep_rho(omegas, K_CRIT)
    recovered = harvest_plateaus(omegas, rho)

    # The robustly wide tongues at K = 1 (must all be harvested blind).
    majors = [
        Fraction(0, 1),
        Fraction(1, 3),
        Fraction(1, 2),
        Fraction(2, 3),
        Fraction(1, 1),
    ]
    covered = [m for m in majors if m in recovered]
    worst_err = max((recovered[m] for m in covered), default=1.0)
    cover_ok = len(covered) == len(majors)

    print(f"  distinct rationals harvested  : {len(recovered)}")
    print(
        f"  major tongues covered         : "
        f"{len(covered)}/{len(majors)} "
        f"{[str(m) for m in covered]}"
    )
    print(f"  worst |rho - p/q| on majors   : {worst_err:.2e}")
    ok = cover_ok and len(recovered) >= 8 and worst_err < _LOCK_TOL
    msg = (
        (
            "the rationals emerge blind as locked plateaus and are recovered "
            "from rho alone"
        )
        if ok
        else "too few lockings harvested"
    )
    print(f"  VERDICT: {'PASS' if ok else 'FAIL'} -- {msg}")
    print()
    return ok


# --------------------------------------------------------------------------- #
# TEST 2 -- the Farey / Stern-Brocot tree organises the tongues
# --------------------------------------------------------------------------- #
def test_farey_mediant_organises_tongues() -> bool:
    print("=" * 78)
    print("TEST 2 -- between two Farey neighbours the dominant plateau is")
    print("          the mediant, and tongue width strictly shrinks with")
    print("          the denominator along the Fibonacci path to phi")
    print("=" * 78)

    # (a) arithmetic: the mediant is the unique lowest-denominator fraction
    #     strictly between two Farey neighbours (Stern-Brocot property).
    pairs = [
        (Fraction(0, 1), Fraction(1, 1)),
        (Fraction(1, 2), Fraction(1, 1)),
        (Fraction(0, 1), Fraction(1, 2)),
        (Fraction(1, 2), Fraction(2, 3)),
    ]
    mediant_ok = True
    for f1, f2 in pairs:
        med = farey_mediant(f1, f2)
        nb = is_farey_neighbour(f1, f2)
        low = lowest_denom_between(f1, f2)
        mediant_ok = mediant_ok and nb and (low == med)

    # (b) dynamical: tongue width strictly decreases along 1/2, 2/3, 3/5, 5/8
    #     (the Fibonacci-Farey path that accumulates at phi).
    path = [(1, 2), (2, 3), (3, 5), (5, 8)]
    widths = [tongue_width(p, q, K_CRIT) for p, q in path]
    shrinking = all(widths[i] > widths[i + 1] for i in range(len(widths) - 1))

    print("  (a) mediant = unique lowest-denominator in-between fraction:")
    for f1, f2 in pairs:
        med = farey_mediant(f1, f2)
        print(
            f"      {f1} , {f2}  ->  mediant {med}  "
            f"(neighbour={is_farey_neighbour(f1, f2)})"
        )
    print(f"      Stern-Brocot mediant law holds : {mediant_ok}")
    print("  (b) Arnold tongue widths along the path to phi:")
    for (p, q), w in zip(path, widths):
        print(f"      {p}/{q:<2d} width = {w:.4f}")
    print(f"      strictly shrinking             : {shrinking}")
    ok = mediant_ok and shrinking
    msg = (
        (
            "the dynamics reproduces the Farey/Stern-Brocot tree; tongues "
            "vanish toward phi"
        )
        if ok
        else "mediant/width law broken"
    )
    print(f"  VERDICT: {'PASS' if ok else 'FAIL'} -- {msg}")
    print()
    return ok


# --------------------------------------------------------------------------- #
# TEST 3 -- phi emerges as the most-irrational Fibonacci-Farey limit
# --------------------------------------------------------------------------- #
def test_phi_emerges_as_most_irrational() -> bool:
    print("=" * 78)
    print("TEST 3 -- F_n/F_{n+1} -> 1/phi (canonical), the [0;1,1,1,...]")
    print("          continued fraction that saturates the Hurwitz bound")
    print("          (phi = the most irrational number)")
    print("=" * 78)

    fib = fibonacci(30)
    ratios = [fib[i] / fib[i + 1] for i in range(len(fib) - 1)]
    conv_err = abs(ratios[-1] - PHI_INV)

    # continued fraction of 1/phi is all 1s after the leading 0
    cf = continued_fraction(PHI_INV, 18)
    cf_all_ones = cf[0] == 0 and all(a == 1 for a in cf[1:])

    # Hurwitz saturation: sqrt5 * F_{n+1}^2 * |F_n/F_{n+1} - 1/phi| -> 1
    sqrt5 = math.sqrt(5.0)
    c_vals = []
    for i in range(8, len(fib) - 1):
        err = abs(fib[i] / fib[i + 1] - PHI_INV)
        c_vals.append(sqrt5 * (fib[i + 1] ** 2) * err)
    hurwitz_ok = abs(c_vals[-1] - 1.0) < 0.01

    # the canonical golden ratio IS the limit (phi <-> Phi_s)
    canon_ok = abs((PHI - 1.0) - PHI_INV) < TOL

    print(f"  F_n/F_{{n+1}} last ratio        : {ratios[-1]:.15f}")
    print(f"  1/phi (canonical PHI - 1)     : {PHI_INV:.15f}")
    print(f"  |F_n/F_{{n+1}} - 1/phi|         : {conv_err:.2e}")
    print(f"  continued fraction [0;1,1,..] : {cf[:8]} ... all ones=" f"{cf_all_ones}")
    print(f"  Hurwitz sqrt5*q^2*err -> 1     : {c_vals[-1]:.6f}")
    print(
        f"  canonical PHI source          : "
        f"{'tnfr.constants.canonical' if _HAVE_CANON_PHI else 'fallback'}"
    )
    ok = conv_err < 1e-10 and cf_all_ones and hurwitz_ok and canon_ok
    msg = (
        ("phi emerges as the canonical, maximally irrational " "Fibonacci-Farey limit")
        if ok
        else "phi limit not clean"
    )
    print(f"  VERDICT: {'PASS' if ok else 'FAIL'} -- {msg}")
    print()
    return ok


# --------------------------------------------------------------------------- #
# TEST 4 -- honest scope: phi never locks; the staircase does not fill the line
# --------------------------------------------------------------------------- #
def test_phi_never_locks_wall() -> bool:
    print("=" * 78)
    print("TEST 4 -- at sub-critical coupling phi does NOT lock (it is the")
    print("          residue the dynamics cannot reach as a plateau), the")
    print("          staircase is incomplete, and this closes NOTHING")
    print("=" * 78)

    # (a) phi is un-locked at K_SUB: rho varies through Omega* (slope ~1),
    #     i.e. NOT a flat plateau, while a rational nearby locks.
    om_phi = invert_rho(PHI_INV, K_SUB)
    rho_phi = circle_map_rho(om_phi, K_SUB)
    lo = circle_map_rho(om_phi - _PLATEAU_DELTA, K_SUB)
    hi = circle_map_rho(om_phi + _PLATEAU_DELTA, K_SUB)
    phi_slope = abs(hi - lo) / (2.0 * _PLATEAU_DELTA)
    phi_unlocked = phi_slope > 0.5  # drifting, not flat
    phi_hit = abs(rho_phi - PHI_INV) < 1e-3

    # a rational (1/2) at the same K_SUB DOES lock (flat plateau)
    rational_locked = is_plateau(0.5, K_SUB, 0.5)

    # (b) the devil's staircase is incomplete at K_SUB (locked measure < 1)
    #     but (near-)complete at K_CRIT.
    m_sub = locked_measure(K_SUB)
    m_crit = locked_measure(K_CRIT)
    incomplete = (m_sub < 0.95) and (m_crit > m_sub)

    # (c) canonical cross-check via the 2-oscillator Kuramoto (Adler) lock:
    #     a commensurate detuning < K locks (phase difference bounded,
    #     winding W -> 0), the golden detuning > K winds (W != 0). The
    #     canonical order parameter confirms the locked pair is coherent.
    def adler_pair(
        d_omega: float, k: float, steps: int = 20000, dt: float = 0.01
    ) -> tuple:
        th1 = th2 = 0.0
        for _ in range(steps):
            s = math.sin(th2 - th1)
            th1 += dt * (0.5 * k * s)
            th2 += dt * (d_omega - 0.5 * k * s)
        return th1, th2

    n_steps, dt = 20000, 0.01
    span = n_steps * dt
    t1c, t2c = adler_pair(0.30, K_SUB, n_steps, dt)  # 0.30 < 0.5: lock
    t1g, t2g = adler_pair(PHI_INV, K_SUB, n_steps, dt)  # 0.618 > 0.5: wind
    w_comm = abs(t2c - t1c) / span  # bounded -> ~0 for a locked pair
    w_gold = abs(t2g - t1g) / span  # grows -> winding rate for golden
    comm_locked = w_comm < 1e-2
    gold_winds = w_gold > 0.1
    two_pi = 2.0 * math.pi
    pair_turns = np.array([t1c, t2c]) / two_pi
    r_pair, _ = kuramoto_order_parameter(pair_turns)
    r_src = (
        "tnfr.gamma.kuramoto_R_psi (CANONICAL)"
        if (_HAVE_KURAMOTO and _HAVE_NX)
        else "numpy fallback"
    )
    r_ok = comm_locked and gold_winds and r_pair > 0.5

    print(f"  Omega* with rho=1/phi (K={K_SUB}) : {om_phi:.6f}")
    print(f"  rho at Omega* (~1/phi)        : {rho_phi:.6f} " f"(hit={phi_hit})")
    print(
        f"  slope d(rho)/d(Omega) at phi  : {phi_slope:.3f}  "
        f"(unlocked={phi_unlocked})"
    )
    print(f"  rational 1/2 locks at K={K_SUB}    : {rational_locked}")
    print(f"  locked measure  K={K_SUB}         : {m_sub:.3f}  (< 1)")
    print(f"  locked measure  K={K_CRIT}         : {m_crit:.3f}")
    print(f"  Adler winding W (commensurate): {w_comm:.4f}  " f"(locked={comm_locked})")
    print(f"  Adler winding W (golden)      : {w_gold:.4f}  " f"(winds={gold_winds})")
    print(f"  R(locked commensurate pair)   : {r_pair:.4f}")
    print(f"  order-parameter source        : {r_src}")
    ok = phi_hit and phi_unlocked and rational_locked and incomplete and r_ok
    msg = (
        (
            "phi is the un-lockable residue (soft: a limit of rationals); "
            "staircase incomplete; nothing closed"
        )
        if ok
        else "phi locked?!"
    )
    print(f"  VERDICT: {'PASS' if ok else 'FAIL'} -- {msg}")
    print()
    return ok


def main() -> int:
    print(__doc__)
    r1 = test_rationals_emerge_as_lockings()
    r2 = test_farey_mediant_organises_tongues()
    r3 = test_phi_emerges_as_most_irrational()
    r4 = test_phi_never_locks_wall()

    print("=" * 78)
    print("SUMMARY")
    print("=" * 78)
    print(
        f"  TEST 1 rationals emerge as lockings (number-OUT): "
        f"{'PASS' if r1 else 'FAIL'}"
    )
    print(
        f"  TEST 2 Farey/Stern-Brocot organises the tongues : "
        f"{'PASS' if r2 else 'FAIL'}"
    )
    print(
        f"  TEST 3 phi = canonical most-irrational limit    : "
        f"{'PASS' if r3 else 'FAIL'}"
    )
    print(
        f"  TEST 4 phi never locks; staircase incomplete    : "
        f"{'PASS' if r4 else 'FAIL'}"
    )
    structural = r1 and r2 and r3 and r4
    print()
    label = "ALL PASS" if structural else "SOME FAILED"
    print(f"  STRUCTURAL CHECKS: {label}")
    print()
    print("  THESIS VERDICT: OPEN, by design (it EXTENDS, it does")
    print("  not close). Camino 9/14 made the primes emerge from the")
    print("  STATIC spectrum of a fixed graph; this harness makes the")
    print("  RATIONALS emerge from the TIME EVOLUTION of the nodal phase")
    print("  (the sine circle map = single-node Kuramoto reduction of")
    print("  dEPI/dt = nu_f * DNFR). The Farey/Stern-Brocot tree organises")
    print("  the Arnold tongues, and phi emerges as the canonical, most")
    print("  irrational Fibonacci-Farey limit -- the LAST number to lock.")
    print("  The lock/no-lock split of the dynamics mirrors the real/phase")
    print("  split of the spectrum: locked rationals are the reachable")
    print("  half (range R_inf); the un-locked irrationals, phi foremost,")
    print("  play the residue role (ker R_inf = Fix(G)^perp), the dynamical")
    print("  analogue of S(T) = (1/pi) arg zeta(1/2 + iT). But phi is only")
    print("  the un-lockable LIMIT of reachable rationals (a soft residue),")
    print("  not the hard orthogonal residue S(T); the dynamics yields")
    print("  discrete rationals plus one phi, not the continuum. G4 = RH")
    print("  stays OPEN; R and pi remain the assumed substrate; phi EMERGES.")
    return 0 if structural else 1


if __name__ == "__main__":
    raise SystemExit(main())