Package evaluation to test FactorGraph on Julia 1.14.0-DEV.2468 (92be8bc088*) started at 2026-07-06T02:19:39.805 ################################################################################ # Set-up # Installing PkgEval dependencies (TestEnv)... Activating project at `~/.julia/environments/v1.14` Set-up completed after 13.65s ################################################################################ # Installation # Installing FactorGraph... Resolving package versions... Updating `~/.julia/environments/v1.14/Project.toml` [528f6532] + FactorGraph v0.2.5 Updating `~/.julia/environments/v1.14/Manifest.toml` [528f6532] + FactorGraph v0.2.5 [56f22d72] + Artifacts v1.11.0 [8f399da3] + Libdl v1.11.0 [37e2e46d] + LinearAlgebra v1.14.0 [9a3f8284] + Random v1.11.0 [ea8e919c] + SHA v1.13.0 [e66e0078] + CompilerSupportLibraries_jll v1.5.5+2 [4536629a] + OpenBLAS_jll v0.3.33+0 [8e850b90] + libblastrampoline_jll v5.15.0+0 Installation completed after 4.06s ################################################################################ # Precompilation # Precompiling PkgEval dependencies... Precompiling package dependencies... Precompiling project... 3.3 s ✓ FactorGraph 1 dependency successfully precompiled in 3 seconds. 8 already precompiled. Precompilation completed after 28.36s ################################################################################ # Testing # Testing FactorGraph Status `/tmp/jl_xzAIeS/Project.toml` [528f6532] FactorGraph v0.2.5 [37e2e46d] LinearAlgebra v1.14.0 [9a3f8284] Random v1.11.0 [8dfed614] Test v1.11.0 Status `/tmp/jl_xzAIeS/Manifest.toml` [528f6532] FactorGraph v0.2.5 [56f22d72] Artifacts v1.11.0 [2a0f44e3] Base64 v1.11.0 [b77e0a4c] InteractiveUtils v1.11.0 [ac6e5ff7] JuliaSyntaxHighlighting v1.13.0 [8f399da3] Libdl v1.11.0 [37e2e46d] LinearAlgebra v1.14.0 [56ddb016] Logging v1.11.0 [d6f4376e] Markdown v1.11.0 [9a3f8284] Random v1.11.0 [ea8e919c] SHA v1.13.0 [9e88b42a] Serialization v1.11.0 [f489334b] StyledStrings v1.13.0 [8dfed614] Test v1.11.0 [e66e0078] CompilerSupportLibraries_jll v1.5.5+2 [4536629a] OpenBLAS_jll v0.3.33+0 [8e850b90] libblastrampoline_jll v5.15.0+0 Testing Running tests... Test Summary: | Pass Total Time Scalar inputs | 50 50 18.0s One-dimensional graph accepts scalar GaussianFactor arguments | 13 13 8.0s Gaussian variables accept named components | 14 14 1.1s Default Gaussian variable labels preserve IDs | 3 3 0.0s Gaussian variable nodes can be used to construct factors | 11 11 8.2s Inference defaults accept scalar mean and covariance | 9 9 0.6s Test Summary: | Pass Total Time Discrete factor graph | 97 97 11.2s Constructs graph from variables and factors | 17 17 4.6s Default states use integer references | 3 3 0.1s Default discrete variable labels preserve IDs | 3 3 0.0s Builds graph incrementally | 6 6 0.7s Discrete variable nodes can be used to construct factors | 14 14 2.6s Updates table and initialize flag | 5 5 0.3s Rejects invalid models atomically | 29 29 0.9s Constructs tree view | 12 12 1.4s Tree view refreshes after graph-only leaf addition | 6 6 0.6s Rejects invalid discrete tree views | 2 2 0.0s Test Summary: | Pass Total Time Discrete sum-product inference | 97 97 13.2s Constructs inference state | 9 9 0.0s Updates messages manually | 3 3 3.6s Runs gbp! to brute-force marginals on a tree | 3 3 2.3s Handles ternary factor tables | 3 3 2.7s Applies global and selected damping | 6 6 1.3s Updates an initializing unary factor with inference | 3 3 0.4s Freezes selected updates | 8 8 0.8s Extends inference after graph additions | 10 10 0.9s Tree forward-backward matches brute-force marginals | 8 8 0.3s Tree forward and backward steps | 10 10 0.1s Tree cursor and selected steps | 8 8 0.1s Tree freeze helpers delegate to discrete inference state | 7 7 0.4s Tree damping helpers delegate to discrete inference state | 9 9 0.2s Tree warm-start addition refreshes view | 7 7 0.1s Detects stale topology | 1 1 0.0s Reports message and marginal changes | 2 2 0.0s Test Summary: | Pass Total Time Discrete min-sum MAP inference | 24 24 6.5s Constructs inference state | 7 7 0.0s Runs schedules to brute-force MAP | 3 3 4.5s Handles ternary factor tables | 1 1 0.3s Supports damping and freezing | 5 5 0.4s Tree forward-backward matches brute-force MAP | 4 4 0.4s Extends inference after graph additions | 4 4 0.8s Test Summary: | Pass Total Time Numerical correctness | 1954 1954 1m45.4s Gaussian inference matches analytic posterior | 14 14 1m01.9s Vector Gaussian inference matches normal equations | 14 14 6.5s Correlated vector Gaussian chain matches WLS | 19 19 0.6s Gaussian graph updates match fresh WLS solutions | 21 21 3.8s Gaussian warm-start updates match fresh inference numerics | 42 42 0.3s Discrete graph updates match brute-force references | 4 4 1.2s Initializing unary updates reset to numeric references | 12 12 0.6s Invalid updates leave numerical state unchanged | 22 22 0.6s Stale inference rejects numerical operations | 8 8 0.3s Damping alpha extremes match direct message semantics | 198 198 4.1s Manual one-step messages match closed-form references | 8 8 0.2s Residual updateCount selects exactly one candidate | 10 10 1.2s Invalid Gaussian models fail instead of producing silent numerics | 2 2 0.0s Gaussian results are invariant to model ordering | 16 16 0.0s Discrete zero probabilities match brute-force references | 6 6 0.0s Discrete ternary factor matches brute-force references | 6 6 1.4s Loopy Gaussian GBP converges to WLS mean | 9 9 0.0s Gaussian schedules recover WLS on a loopy graph | 27 27 1.2s Tree dynamic updates match centralized references | 17 17 1.5s Component lookup selects numerical marginal entries | 6 6 0.0s WLS comparison helpers report numerical agreement | 16 16 7.1s Partial residual schedules converge to numeric references | 15 15 1.3s Residual updateFraction schedules converge to numeric references | 15 15 1.2s Residual Gaussian GBP reaches the same numerical solution | 9 9 0.7s Gaussian damping preserves the final numerical solution | 9 9 2.1s Gaussian edge damping preserves the final numerical solution | 9 9 0.3s Gaussian freeze controls recover after unfreeze | 36 36 1.8s Gaussian freeze preserves stored messages until unfreeze | 756 756 1.3s Discrete freeze preserves stored messages until unfreeze | 168 168 1.5s Gaussian forward-backward matches analytic posterior | 8 8 0.0s Discrete sum-product matches brute-force marginals | 7 7 0.0s Discrete min-sum matches brute-force MAP | 6 6 0.0s Gaussian schedule matrix converges to the same WLS solution | 27 27 0.3s Tree forward-backward matches centralized numeric references | 58 58 0.2s Tree step-by-step sweeps match full numeric sweeps | 54 54 0.2s Selected tree edge sweeps match full numeric sweeps | 110 110 0.1s Tree root refresh preserves numeric results | 81 81 0.1s Tree and graph-only topology changes reject stale inference | 6 6 0.2s Edge damping probability extremes match direct message semantics | 90 90 0.0s Discrete min-sum tie estimates have optimal brute-force weight | 4 4 1.4s Lookup helpers remain aligned after inference-aware updates | 3 3 0.2s Loopy discrete inference remains close to brute-force reference | 6 6 0.0s Test Summary: | Pass Total Time GaussianFactor additions | 246 246 4.8s Gaussian inference common supertype | 8 8 0.0s Builds graph incrementally | 9 9 0.2s Gaussian addVariable convenience accepts components | 4 4 0.0s Rejects duplicate incremental variables | 4 4 0.0s Adds variables after factors during graph-only construction | 7 7 0.0s Adds labeled GaussianFactor and updates adjacency | 11 11 0.6s Adds GaussianFactor from argument list with default label | 3 3 0.0s Adds GaussianFactor and extends moment inference as warm start | 35 35 0.6s Adds GaussianFactor and extends canonical inference as warm start | 25 25 0.3s Adds GaussianVariable and GaussianFactor extending moment inference as warm start | 19 19 0.0s Added moment GaussianVariable uses stored inference defaults | 5 5 0.1s Added moment GaussianVariable and edges use vector inference defaults | 10 10 1.1s Added moment GaussianVariable explicit prior overrides inference defaults | 4 4 0.2s Moment inference uses initializing unary GaussianFactor as initial belief | 10 10 0.0s Moment warm-start initializing unary GaussianFactor resets incident messages | 10 10 0.0s Adds GaussianVariable and GaussianFactor extending canonical inference as warm start | 14 14 0.1s Added canonical GaussianVariable uses stored inference defaults | 5 5 0.1s Added canonical GaussianVariable and edges use vector inference defaults | 10 10 1.0s Added canonical GaussianVariable explicit prior overrides inference defaults | 4 4 0.0s Canonical inference uses initializing unary GaussianFactor as initial belief | 12 12 0.0s Canonical warm-start initializing unary GaussianFactor resets incident messages | 14 14 0.0s Rejects warm-start addition when inference no longer matches graph | 3 3 0.0s Rejects stale inference after graph-only topology changes | 5 5 0.1s Rejects invalid additions atomically | 15 15 0.3s Test Summary: | Pass Total Time Coefficient block lookups | 4 4 0.2s Test Summary: | Pass Total Time GaussianFactor updates | 57 57 0.8s Updates mean and covariance by label | 8 8 0.1s Updates mean by index | 2 2 0.1s Updates by GaussianFactor keyword | 3 3 0.1s Initializes moment messages during warm-start update | 13 13 0.0s Initializes canonical messages during warm-start update | 13 13 0.0s Updates coefficient with fixed dimensions | 8 8 0.0s Rejects invalid updates atomically | 10 10 0.4s Test Summary: | Pass Total Time Validation helpers | 17 17 1.2s Residuals use current marginal means | 9 9 0.9s Residuals support tree graph views | 2 2 0.2s WLS comparison printers support graph and tree views | 6 6 0.1s Test Summary: | Pass Total Time Printing helpers | 24 24 8.2s Prints empty graphs | 2 2 2.1s Prints graph models and edges | 5 5 1.2s Prints Gaussian marginals, estimates, and WLS results | 7 7 2.9s Prints discrete sum-product messages and marginals | 4 4 0.5s Prints Gaussian min-sum messages | 3 3 0.7s Prints discrete min-sum messages and estimates | 3 3 0.8s Test Summary: | Pass Total Time Graph figures | 175 175 3m38.3s SVG string output | 6 6 11.6s Hides factor labels with compact nodes | 2 2 3.8s Vertical orientation | 4 4 12.1s Per-item highlight styles | 8 8 5.2s Inference residuals | 16 16 27.1s Inference variance | 12 12 9.3s Inference marginal tooltips | 6 6 7.7s Custom graph style | 6 6 3.7s Tooltips | 32 32 16.2s Edge ids | 8 8 8.7s Focused view | 11 11 19.2s Tree graph output | 16 16 15.2s File output | 6 6 4.0s Validation | 42 42 1m14.3s Test Summary: | Pass Total Time Diagnostics | 43 43 3.3s Moment message and marginal changes | 8 8 1.4s Canonical message and marginal changes | 8 8 0.9s Gaussian min-sum message and estimate changes | 7 7 0.9s GBP tolerance stops on marginal change for moment inference | 7 7 0.0s GBP tolerance stops on marginal change for canonical inference | 7 7 0.0s GBP tolerance validation | 2 2 0.1s Tree overloads delegate to the underlying graph | 2 2 0.0s Rejects mismatched inference forms | 2 2 0.0s Test Summary: | Pass Total Time Residual Gaussian scheduling | 61 61 3.1s Stateless schedules validate matching inference | 6 6 0.1s Builds and validates residual schedule | 9 9 0.1s Updates top fraction of moment residuals | 3 3 0.1s Updates requested count of canonical residuals | 3 3 0.0s Keyword residual messages match manual Gaussian schedules | 3 3 1.3s Manual Gaussian sequential schedule matches keyword | 3 3 0.0s Manual Gaussian tree sequential schedule delegates to graph | 1 1 0.0s Residual Gaussian tree schedules and steps delegate to graph | 6 6 0.1s Residual Gaussian tree messages delegate to graph | 2 2 0.0s Residual Gaussian tree GBP delegates to graph | 6 6 0.5s Residual Gaussian updates honor per-edge damping | 6 6 0.3s Residual GBP produces Gaussian tree MAP means | 3 3 0.0s gbp! selects Gaussian schedules | 4 4 0.1s Residual scheduling rejects broadcast mode | 6 6 0.4s Test Summary: | Pass Total Time Residual discrete scheduling | 48 48 2.8s Builds and validates residual schedule | 9 9 0.0s Updates requested count of discrete residuals | 3 3 0.0s Rejects stale discrete residual schedules | 1 1 0.1s Keyword residual messages match manual discrete schedules | 2 2 0.6s Manual discrete sequential schedule matches keyword | 2 2 0.1s Manual discrete tree sequential schedule delegates to graph | 2 2 0.1s Residual discrete tree steps delegate to graph | 4 4 0.0s Residual discrete tree GBP delegates to graph | 4 4 0.3s Residual discrete updates honor per-edge damping | 4 4 0.1s Residual GBP matches brute-force marginals on a tree | 2 2 0.8s Residual tree overload delegates to underlying discrete graph | 2 2 0.0s Residual tree overload supports discrete min-sum | 2 2 0.0s gbp! selects discrete schedules | 7 7 0.3s Manual discrete flooding schedule matches gbp! | 2 2 0.1s Manual discrete min-sum flooding schedule matches gbp! | 2 2 0.3s Test Summary: | Pass Total Time Manual message updates | 40 40 0.3s Moment messages then marginals matches gbp! | 8 8 0.0s Moment directional messages then marginals matches gbp! | 8 8 0.1s Canonical messages then marginals matches gbp! | 8 8 0.0s Canonical directional messages then marginals matches gbp! | 8 8 0.1s Canonical directional broadcast messages then marginals matches gbp! | 8 8 0.1s Test Summary: | Pass Total Time Moment form | 712 712 3.8s Schedule: standard | 25 25 1.4s Schedule: broadcast | 25 25 0.0s Schedule: standard + flooding | 25 25 0.0s Schedule: broadcast + flooding | 25 25 0.0s Freeze: factor | 124 124 0.7s Freeze: variable | 140 140 0.3s Freeze: edge | 124 124 0.3s Damping: global | 100 100 0.3s Damping: edge | 124 124 0.6s Test Summary: | Pass Total Time Canonical form | 712 712 2.5s Schedule: standard | 25 25 0.4s Schedule: broadcast | 25 25 0.0s Schedule: standard + flooding | 25 25 0.0s Schedule: broadcast + flooding | 25 25 0.0s Freeze: factor | 124 124 0.6s Freeze: variable | 140 140 0.3s Freeze: edge | 124 124 0.3s Damping: global | 100 100 0.2s Damping: edge | 124 124 0.6s Test Summary: | Pass Total Time Gaussian min-sum inference | 80 80 1.8s Test Summary: | Pass Total Time Tree GaussianFactor graph | 208 208 1.9s Construction | 11 11 0.0s Root keyword constructs tree view | 20 20 0.3s Root selection | 2 2 0.6s Rejects non-tree graph | 1 1 0.0s Controlled forward/backward steps | 14 14 0.0s Controlled moment forward/backward steps | 19 19 0.2s Tree cursor forward/backward steps | 14 14 0.0s Selected forward/backward steps | 12 12 0.0s Tree freeze helpers delegate to Gaussian inference state | 5 5 0.1s Tree damping helpers delegate to Gaussian inference state | 8 8 0.1s Tree warm-start addition refreshes view | 15 15 0.0s Tree warm-start GaussianVariable uses stored inference defaults | 12 12 0.0s Dynamic tree full sweep matches WLS after adding leaf | 9 9 0.0s Robot-style incremental terminal update matches full sweep at new state | 2 2 0.5s Forward and backward helpers | 13 13 0.0s Moment marginals match WLS | 7 7 0.0s Moment forward-backward matches WLS | 7 7 0.0s Moment forward-backward with nondefault root | 7 7 0.0s Canonical marginals match WLS | 7 7 0.0s Canonical forward-backward matches WLS | 7 7 0.0s Canonical forward-backward with nondefault root | 7 7 0.0s Gaussian tree updateFactor! delegates without changing topology | 9 9 0.1s Testing FactorGraph tests passed Testing completed after 485.29s PkgEval succeeded after 541.86s