Package evaluation to test NeatEvolution on Julia 1.14.0-DEV.1877 (00654c1407*) started at 2026-03-10T13:20:39.028 ################################################################################ # Set-up # Installing PkgEval dependencies (TestEnv)... Activating project at `~/.julia/environments/v1.14` Set-up completed after 12.81s ################################################################################ # Installation # Installing NeatEvolution... Resolving package versions... Updating `~/.julia/environments/v1.14/Project.toml` [fcc92617] + NeatEvolution v0.1.0 Updating `~/.julia/environments/v1.14/Manifest.toml` [069b7b12] + FunctionWrappers v1.1.3 ⌅ [682c06a0] + JSON v0.21.4 [fcc92617] + NeatEvolution v0.1.0 [69de0a69] + Parsers v2.8.3 [aea7be01] + PrecompileTools v1.3.3 [21216c6a] + Preferences v1.5.2 [10745b16] + Statistics v1.11.1 [56f22d72] + Artifacts v1.11.0 [ade2ca70] + Dates v1.11.0 [8f399da3] + Libdl v1.11.0 [37e2e46d] + LinearAlgebra v1.13.0 [a63ad114] + Mmap v1.11.0 [de0858da] + Printf v1.11.0 [9a3f8284] + Random v1.11.0 [ea8e919c] + SHA v1.0.0 [9e88b42a] + Serialization v1.11.0 [fa267f1f] + TOML v1.0.3 [cf7118a7] + UUIDs v1.11.0 [4ec0a83e] + Unicode v1.11.0 [e66e0078] + CompilerSupportLibraries_jll v1.3.0+1 [4536629a] + OpenBLAS_jll v0.3.30+0 [8e850b90] + libblastrampoline_jll v5.15.0+0 Info Packages marked with ⌅ have new versions available but compatibility constraints restrict them from upgrading. To see why use `status --outdated -m` Installation completed after 4.62s ################################################################################ # Precompilation # Precompiling PkgEval dependencies... Precompiling package dependencies... Precompiling packages... 2722.7 ms ✓ NeatEvolution 1 dependency successfully precompiled in 3 seconds. 20 already precompiled. Precompilation completed after 24.74s ################################################################################ # Testing # Testing NeatEvolution Status `/tmp/jl_SWV11X/Project.toml` [069b7b12] FunctionWrappers v1.1.3 ⌅ [682c06a0] JSON v0.21.4 [fcc92617] NeatEvolution v0.1.0 [10745b16] Statistics v1.11.1 [ade2ca70] Dates v1.11.0 [9a3f8284] Random v1.11.0 [9e88b42a] Serialization v1.11.0 [fa267f1f] TOML v1.0.3 [8dfed614] Test v1.11.0 Status `/tmp/jl_SWV11X/Manifest.toml` [069b7b12] FunctionWrappers v1.1.3 ⌅ [682c06a0] JSON v0.21.4 [fcc92617] NeatEvolution v0.1.0 [69de0a69] Parsers v2.8.3 [aea7be01] PrecompileTools v1.3.3 [21216c6a] Preferences v1.5.2 [10745b16] Statistics v1.11.1 [56f22d72] Artifacts v1.11.0 [2a0f44e3] Base64 v1.11.0 [ade2ca70] Dates v1.11.0 [b77e0a4c] InteractiveUtils v1.11.0 [ac6e5ff7] JuliaSyntaxHighlighting v1.13.0 [8f399da3] Libdl v1.11.0 [37e2e46d] LinearAlgebra v1.13.0 [56ddb016] Logging v1.11.0 [d6f4376e] Markdown v1.11.0 [a63ad114] Mmap v1.11.0 [de0858da] Printf v1.11.0 [9a3f8284] Random v1.11.0 [ea8e919c] SHA v1.0.0 [9e88b42a] Serialization v1.11.0 [f489334b] StyledStrings v1.13.0 [fa267f1f] TOML v1.0.3 [8dfed614] Test v1.11.0 [cf7118a7] UUIDs v1.11.0 [4ec0a83e] Unicode v1.11.0 [e66e0078] CompilerSupportLibraries_jll v1.3.0+1 [4536629a] OpenBLAS_jll v0.3.30+0 [8e850b90] libblastrampoline_jll v5.15.0+0 Info Packages marked with ⌅ have new versions available but compatibility constraints restrict them from upgrading. Testing Running tests... Test Summary: | Pass Total Time Gene Tests | 4052 4052 9.4s Standard config: all CTRNN/IZNN fields remain NaN CTRNN init: time_constant=0.05403511807489422 CTRNN mutate: time_constant changed to 0.06420456485154036 IZNN init: a=0.02040351180748942, b=0.20289951117313063, c=-65.33521117065105, d=8.613979770863605 IZNN mutate: iz_a changed to 0.016114828022145318 Copy: all 5 new fields preserved and independent Crossover CTRNN: time_constant from parent1 52.900000000000006% of trials Crossover NaN: NaN fields propagate correctly Distance CTRNN: Δtc contribution = 0.016 Distance CTRNN: one NaN → no contribution Distance IZNN: 8.452000000000002 (expected 8.452000000000002) Test Summary: | Pass Total Time CTRNN/IZNN Gene Extensions | 1043 1043 0.4s Construction: node 0 has tau=0.02, 1 link NaN time_constant correctly raises error Single step: output=0.09999999999999999, expected=0.1 Steady-state: target=3.14, output=3.139999999988583 Per-node tau: fast(tau=0.01) error=0.005153775207320188, slow(tau=1.0) error=0.9512056281970314 Reset: after reset output=1.0, fresh output=1.0 set_node_value!: initial=5.0, after decay with input=0: 4.5 Variable dt: time_seconds=0.025 Determinism: two networks produced identical outputs for 5 advances Multi-node recurrent: output evolves over time, final=0.8119733951998017 Sigmoid CTRNN: input=0, output=0.5 (expected ~0.5) Input mismatch: correctly throws for wrong input count Disabled conn: with_disabled=0.22217864060085296, without=0.22217864060085296 Multiple inputs: output=0.15, expected=0.15 Bias effect: output=0.19999999999999998, expected=0.2 Non-unity response: output=0.049999999999999996, expected=0.05 Inhibitory weight: excitatory=0.09999999999999999, inhibitory=-0.09999999999999999 Disconnected node: node 0 in evals=true, node 1 in evals=false Product aggregation: output=0.6, expected=0.6 Config wrapper: GenomeConfig output=0.4758423242653232, Config output=0.4758423242653232 AbstractNetwork: inputs=[-2, -1], outputs=[0, 1, 2], num_in=2, num_out=3 Analytical: t=0.01, expected=0.12192643874821496, euler=0.12198592950742178, err=5.949075920681779e-5 Analytical: t=0.05, expected=0.5529980423214877, euler=0.553241564707517, err=0.00024352238602920462 Analytical: t=0.1, expected=0.9836733507184164, euler=0.9840526378470098, err=0.0003792871285933641 Analytical: t=0.2, expected=1.5803013970713942, euler=1.580761438072658, err=0.0004600410012638445 Analytical: t=0.5, expected=2.294787503440253, euler=2.295044029730444, err=0.00025652629019123907 Time accumulation: net.time=0.081, expected=0.081 Zero-link node: bias=1.7, output=1.6999999999938187 (should converge to bias) Test Summary: | Pass Total Time CTRNNNetwork | 64 64 6.5s Initial state: v=-65.0, u=-13.0, fired=0.0 Spike at step 3 No spike with zero current: v=-70.12146109912607 Regular spiking: 4 spikes in 100ms Fast spiking: 21 spikes, Regular: 7 spikes in 200ms Overflow handling: v=-65.0, u=-13.0, fired=0.0 Network from genome: neuron 0 params match NodeGene iz_ fields NaN iz parameters correctly raises error set_inputs! drives neuron to spike Recurrent: A spiked at step 3 Recurrent: B spiked at step 5 (after A) Reset: v=-65.0, u=-13.0 Spike timing: hand=4, code=4 Preset constants: accessible and correct Test Summary: | Pass Total Time IZNNNetwork | 34 34 1.7s ┌ Info: Adjusted counters for 2 initial genomes │ next_genome_id = 201 │ next_node_id = 76 └ next_innovation = 21 ┌ Info: Adjusted counters for 2 initial genomes │ next_genome_id = 1002 │ next_node_id = 1 └ next_innovation = 23 ┌ Info: Adjusted counters for 2 initial genomes │ next_genome_id = 502 │ next_node_id = 1 └ next_innovation = 23 ┌ Info: Adjusted counters for 1 initial genomes │ next_genome_id = 2 │ next_node_id = 1000 └ next_innovation = 0 ┌ Info: Adjusted counters for 1 initial genomes │ next_genome_id = 2 │ next_node_id = 1 └ next_innovation = 502 ┌ Info: Adjusted counters for 8 initial genomes │ next_genome_id = 503 │ next_node_id = 1 └ next_innovation = 23 ┌ Info: Adjusted counters for 1 initial genomes │ next_genome_id = 1000 │ next_node_id = 1 └ next_innovation = 23 ┌ Info: Adjusted counters for 1 initial genomes │ next_genome_id = 12346 │ next_node_id = 101 └ next_innovation = 12 ┌ Info: Adjusted counters for 2 initial genomes │ next_genome_id = 102 │ next_node_id = 1 └ next_innovation = 147 ┌ Info: Adjusted counters for 1 initial genomes │ next_genome_id = 1000000 │ next_node_id = 1 └ next_innovation = 147 Test Summary: | Pass Total Time Population Seeding with Imported Genomes | 336 336 29.2s Construction: output node has 2 inputs (input + self-connection) State persistence: t1=1.0, t2=1.5, t3=1.75 Reset: before=1.0, after=1.0 Self-connection with bias: t1=2.5, t2=3.25, t3=3.475 Cycle A→B→A: t1=0.0, t2=1.0, t3=1.0, t4=1.5 Equivalence: input=0.0, FF=0.5, RNN=0.5 Equivalence: input=0.5, FF=1.5, RNN=1.5 Equivalence: input=1.0, FF=2.5, RNN=2.5 Equivalence: input=-1.0, FF=-1.5, RNN=-1.5 Equivalence: input=3.14, FF=6.78, RNN=6.78 Multi-layer: FF=0.8499999999999999, RNN step1=0.1, RNN step2=0.8499999999999999 Reproducibility: two independent networks produced identical outputs for 5 timesteps Multi-IO: inputs=[1.0, 2.0] (node -2=1.0, node -1=2.0), outputs=[2.0, 1.0] Test Summary: | Pass Total Time RecurrentNetwork | 32 32 1.6s Before save: generation=5, pop_size=150, species=2 ┌ Info: Adjusted counters for 150 initial genomes │ next_genome_id = 887 │ next_node_id = 127 └ next_innovation = 278 After restore: generation=5, pop_size=150, species=2 Best genome fitness preserved: 3.0199535942635793 Checkpoint files created: 3 Files: ["test-checkpoint-interval-2", "test-checkpoint-interval-5", "test-checkpoint-interval-8"] ┌ Info: Adjusted counters for 150 initial genomes │ next_genome_id = 887 │ next_node_id = 127 └ next_innovation = 278 Saved at generation 5, restored and ran 5 more, now at generation 10 ┌ Info: Adjusted counters for 150 initial genomes │ next_genome_id = 887 │ next_node_id = 127 └ next_innovation = 278 Existing genome IDs: 150 New genome IDs after restore+evolve: 146 ID conflicts: 0 ┌ Info: Adjusted counters for 150 initial genomes │ next_genome_id = 887 │ next_node_id = 127 └ next_innovation = 278 Species before: Dict(2 => 49, 1 => 101) Species after: Dict(2 => 49, 1 => 101) ┌ Info: Adjusted counters for 150 initial genomes │ next_genome_id = 595 │ next_node_id = 95 └ next_innovation = 201 Manual save/restore: generation=3, pop_size=150 Test Summary: | Pass Total Time Checkpointer | 13 13 9.5s Stagnant after 5 generations with no improvement: is_stagnant=true Steadily improving species never marked stagnant over 10 generations With species_elitism=2: 1 of 3 species marked stagnant Stagnant species fitness=1.0 (lowest) Single species with species_elitism=1: is_stagnant=false (protected) max fitness=10.0, mean fitness=5.0 for members [10.0, 0.0] Test Summary: | Pass Total Time Stagnation | 19 19 0.7s 10 identical genomes → 1 species 3 distant genomes with threshold=0.1 → 3 species Direct distance=0.9, cached=0.9, misses=1 After second lookup: hits=1, misses=1 d(g1,g2)=1.3, d(g2,g1)=1.3, misses=1 (symmetric) All species representatives are members of their species Species count: 1 → 2 after adding distant genome Distance between genomes: 0.7 Expected connection component: 0.7 (excess=1, disjoint=0, avg_weight_diff=0.5, N=2) c1=1.0, c2=1.0, c3=0.4 Symmetry: d(A,B)=0.7, d(B,A)=0.7 Test Summary: | Pass Total Time Speciation | 17 17 0.5s Gaussian init: mean=-0.0258, var=1.0163 Uniform init: mean=0.0301, range=[-1.992, 1.9735] Random init: 52.2% true (expected ~50%) rate_to_true_add: flipped 254/1000 from false Test Summary: | Pass Total Time Attribute Tests | 69 69 4.5s Test Summary: | Pass Total Time Config Validation Tests | 45 45 5.1s After add_node: 2 nodes, 4 connections, 1 disabled Distance before mutations: 0.0 Distance after 20 mutations: 1.0 Test Summary: | Pass Total Time Genome Operation Tests | 63 63 1.8s Created 10 genomes New population size: 20 Population after stagnation: 0 Test Summary: | Pass Total Time Reproduction Tests | 49 49 1.2s Test Summary: | Pass Total Time Miscellaneous Coverage Tests | 81 81 7.0s [ Info: Skipping self-connection test (feed_forward=true in config) One parent disabled: 75.5% disabled offspring (expected ~75%) Both parents disabled: 75.4% disabled offspring (expected ~75%) Both parents enabled: 0.0% disabled offspring (expected 0%) Weight inheritance: 51.7% from gene1 (expected ~50%) ┌ Info: Network exported │ filename = "/tmp/jl_L8N2luTYxa.json" └ format_version = "1.0" [ Info: Network imported from neat-python v1.0 format ┌ Info: Population exported │ num_genomes = 3 │ filename = "/tmp/jl_3stGpY7kls.json" └ format_version = "1.0" softmax([1,2,3]) sums to 0.9999999999999999 softmax([1,1,1,1]) = [0.25, 0.25, 0.25, 0.25] softmax([1000,1001,1002]) sums to 0.9999999999999999, all positive softmax([42]) = [1.0] tmean([1,2,3,4,5], trim=0.2) = 3.0 tmean with trim=0.0 matches mean: 5.0 tmean([42]) = 42.0 Outlier robustness: mean=22.0, tmean=3.0 Test Summary: | Pass Broken Total Time NeatEvolution.jl | 439 4 443 34.5s Testing NeatEvolution tests passed Testing completed after 158.24s PkgEval succeeded after 211.04s