dsfb-swarm
dsfb-swarm is a standalone Rust crate that turns the paper Deterministic Spectral Residual Inference for Swarm Interaction Networks: A DSFB Framework for Structural Phase Stability into a reproducible empirical workflow. It simulates time-varying swarm interaction graphs, computes Laplacian spectra, predicts lambda_k(t) deterministically, measures residuals and residual derivatives, applies trust-gated interaction attenuation, compares against baselines, and writes a timestamped artifact bundle with figures, CSVs, JSON, Markdown, and PDF output.
Citation
- de Beer, R. (2026). Deterministic Spectral Residual Inference for Swarm Interaction Networks: A DSFB Framework for Structural Phase Stability (v1.0). Zenodo. DOI: 10.5281/zenodo.19073826
Why this crate exists
The paper is about more than plotting lambda_2(t). Its main point is that deterministic spectral prediction plus residual-centered diagnosis can reveal structural phase changes in a swarm interaction network before visible fragmentation is obvious. This crate exists to make those claims inspectable:
- it constructs a dynamic graph
G(t)from interacting agents, - it builds the Laplacian
L(t) = D(t) - A(t), - it monitors
lambda_2(t)and higher modes, - it predicts those modes with deterministic predictors
hat lambda_k(t), - it forms residuals
r_k(t) = lambda_k(t) - hat lambda_k(t), - it computes residual drift, residual slew, and residual envelopes,
- it adds mode-shape residuals with eigenvector sign-ambiguity handling,
- it attenuates interactions through trust-gated edge weights,
- it compares the residual loop against simpler baselines,
- it exports enough raw and summarized data for paper-style interpretation.
The crate is intentionally self-contained. It includes its own Cargo.toml, local notebook, tests, and crate-local default output root so it can be run from crates/dsfb-swarm without requiring workspace edits elsewhere.
What mathematical ideas it demonstrates
The implementation follows the paper’s intended objects and terminology:
- Dynamic swarm interaction graph
G(t)with weighted adjacencyA(t). - Degree matrix
D(t)and LaplacianL(t) = D(t) - A(t). - Laplacian eigenvalues
lambda_k(t), especially algebraic connectivitylambda_2(t). - Deterministic spectral predictors:
- zero-order hold,
- first-order extrapolation,
- smooth corrective extrapolation.
- Spectral residuals
r_{lambda_k}(t) = lambda_k(t) - hat lambda_k(t). - Residual drift and residual slew as first and second finite-difference diagnostics.
- Residual envelopes and anomaly certificates.
- Finite-time detectability interpretation through persistent negative residual drift.
- Practical boundedness of the predictor-residual loop in nominal settings.
- Correlation between residual magnitude and Laplacian perturbation scale
||Delta L||_F. - Multi-mode residual stack
r_Lambda(t)forlambda_2 .. lambda_{m+1}. - Optional mode-shape residuals from eigenvector comparison with sign ambiguity handling.
- Trust-gated effective interaction weights
a_ij(t) = T_ij(t) * tilde a_ij(t).
The code does not claim a formal proof. It produces deterministic empirical evidence aligned with the paper’s framework.
Scenario design
The crate runs four paper-facing scenarios:
-
nominal- Stable connected coordination.
- Bounded deterministic excitation.
- No persistent structural degradation.
-
gradual_edge_degradation- Bridge edges weaken progressively.
lambda_2(t)contracts over time.- Residual drift should become persistently negative before visible failure.
-
adversarial_agent- One agent injects inconsistent state and motion.
- The disturbance is localized before trust gating attenuates its influence.
- Multi-mode and mode-shape diagnostics are most useful here.
-
communication_loss- Cross-cluster bridge links collapse.
- The graph fragments and
lambda_2(t)falls sharply. - Trust and residual alarms should respond before or near fragmentation.
Architecture overview
crates/dsfb-swarm/
├── Cargo.toml
├── README.md
├── assets/
│ └── README_FIGURE_PLAN.md
├── examples/
│ └── quickstart.rs
├── notebooks/
│ └── dsfb_swarm_colab.ipynb
├── src/
│ ├── cli.rs
│ ├── config.rs
│ ├── error.rs
│ ├── lib.rs
│ ├── main.rs
│ ├── math/
│ │ ├── baselines.rs
│ │ ├── envelopes.rs
│ │ ├── laplacian.rs
│ │ ├── metrics.rs
│ │ ├── predictor.rs
│ │ ├── residuals.rs
│ │ ├── spectrum.rs
│ │ └── trust.rs
│ ├── report/
│ │ ├── csv.rs
│ │ ├── json.rs
│ │ ├── manifest.rs
│ │ ├── mod.rs
│ │ └── plotting_data.rs
│ └── sim/
│ ├── agents.rs
│ ├── dynamics.rs
│ ├── graph.rs
│ ├── mod.rs
│ ├── runner.rs
│ └── scenarios.rs
└── tests/
├── metrics.rs
├── regression.rs
└── smoke.rs
Module responsibilities
-
sim/agents.rs- deterministic initial swarm geometry,
- local cluster layout with bridge nodes.
-
sim/graph.rs- radius/k-nearest interaction graph construction,
- pairwise disagreement measures,
- edge export helpers.
-
sim/dynamics.rs- consensus/alignment-style 2D motion,
- scalar consensus state update,
- deterministic bounded excitation.
-
sim/scenarios.rs- paper-facing perturbation schedules,
- edge weakening,
- adversarial forcing,
- communication-loss modulation.
-
math/spectrum.rs- symmetric Laplacian eigendecomposition,
- ordered eigenpairs,
- mode-shape sign ambiguity handling.
-
math/predictor.rs- deterministic spectral prediction for scalar and multi-mode monitoring.
-
math/residuals.rs- residuals,
- drift,
- slew,
- mode-shape residuals,
- combined diagnostic scores.
-
math/envelopes.rs- residual envelopes,
- warmup calibration,
- anomaly certificates,
- persistent negative-drift detection.
-
math/trust.rs- binary or smooth trust gating,
- node and edge trust evolution,
- trust-modulated effective adjacency.
-
math/baselines.rs- state-norm thresholding,
- disagreement-energy thresholding,
- raw
lambda_2thresholding.
-
math/metrics.rs- detection lead time,
- TPR/FPR,
- trust suppression delay,
- residual-to-topology correlation,
- boundedness summary statistics.
-
report/*- CSV/JSON emission,
- figure rendering,
- manifest creation,
- Markdown/PDF report writing.
CLI usage
Run all scenarios with default settings:
Run a single scenario:
Run a paper-facing multi-mode diagnostic:
Run the benchmark suite across all scenarios:
Run a custom scaling and noise sweep:
Quickstart example:
Regenerate a compact report for the newest run:
Optional config file
The CLI accepts JSON or TOML config patches through --config.
Example TOML:
[]
= "communication-loss"
= 240
= 48
= true
= 5
= true
= 0.05
Output directory structure
To avoid collateral writes elsewhere in the repository, the default output root is crate-local:
crates/dsfb-swarm/output-dsfb-swarm/YYYY-MM-DD_HH-MM-SS/
Each run creates a fresh timestamped directory. No prior output is overwritten.
Core artifacts:
manifest.jsonrun_config.jsonscenarios_summary.csvbenchmark_summary.csvhero_benchmark_summary.csvtime_series.csvdetector_debug.csvspectra.csvresiduals.csvtrust.csvbaselines.csvanomalies.jsonscenario_<name>_metrics.csvscenario_<name>_timeseries.csvfigures/*.pngreport/dsfb_swarm_report.mdreport/dsfb_swarm_report.pdf
Calibration-critical columns now exported in the CSV summaries:
-
scenarios_summary.csvvisible_failure_stepscalar_detection_stepmultimode_detection_stepscalar_detection_lead_timemultimode_detection_lead_timebaseline_*_lead_timemultimode_minus_scalar_secondstrust_drop_steptrust_suppression_delayresidual_topology_correlation
-
benchmark_summary.csv- the same lead-time and trust-delay fields across size/noise sweeps,
best_baseline_name,best_baseline_lead_time, andlead_time_gain_vs_best_baseline,dsfb_advantage_marginas the exported headline margin against the best baseline,tpr_gain_vs_best_baselineandfpr_reduction_vs_best_baseline,peak_mode_shape_normandpeak_stack_scorefor multi-mode diagnostics,- runtime and residual-to-topology correlation for scaling studies.
-
hero_benchmark_summary.csv- one strongest-evidence row per scenario for:
gradual_edge_degradationadversarial_agentcommunication_loss
- scalar lead, multi lead, best-baseline lead,
dsfb_advantage_margin, trust delay, TPR/FPR pairs, and a deterministicwinnerlabel.
- one strongest-evidence row per scenario for:
-
time_series.csv- calibrated scalar and multi-mode detector signals,
- signal/combined ratios,
- calibrated limits,
- trust scores and trust alarm inputs,
- baseline flags,
- scalar-vs-multimode anomaly decisions at every step.
-
detector_debug.csv- the same per-step detector trace as
time_series.csv, retained as an explicitly named debug export for calibration audits and notebook-side inspection.
- the same per-step detector trace as
What the figures and tables are meant to show
-
lambda2_timeseries.png- Visible contraction or collapse of algebraic connectivity.
-
residual_timeseries.png- Predictor versus observation together with the calibrated negative-residual detector signal and its crossing limit.
-
drift_slew.png- Negative residual drift magnitude, drift threshold, and slew diagnostics for finite-time detectability.
-
trust_evolution.png- Trust suppression of degraded or adversarial influence.
-
baseline_comparison.png- Detection lead-time comparison versus non-predictive baselines.
-
scaling_curves.png- Runtime growth with swarm size.
-
noise_stress_curves.png- TPR/FPR behavior under bounded deterministic noise stress.
-
multimode_comparison.png- Scalar-vs-multi lead times plus direct multi-mode detection advantage in seconds.
-
topology_snapshots.png- Concrete graph changes corresponding to spectral warnings.
-
hero_leadtime_comparison.png- The strongest calibrated scalar, multi-mode, and best-baseline lead times for the three headline scenarios, paired with the exported DSFB advantage margin and annotated by the computed winner.
-
hero_benchmark_table.png- A compact publication-style table view of the hero benchmark rows with the winner and DSFB advantage margin exposed directly.
-
adversarial_trust_detection_focus.png- A paper-ready adversarial timing view showing onset, multi-mode detection, scalar detection, trust-drop timing, and trust suppression on one aligned time axis.
Reproducibility notes
- The swarm dynamics are deterministic except for bounded analytic pseudo-noise terms generated from fixed trigonometric expressions.
- Identical settings reproduce the same metrics and figures except for the timestamped folder name.
- The output root is local to this crate by default, which keeps the crate self-contained.
- The notebook rebuilds the crate and reruns the benchmark suite from scratch every time.
With the current calibration, the representative benchmark is designed to show:
- a clear scalar lead-time win over raw
lambda_2thresholding incommunication_loss, - a clear multi-mode lead-time win over the best baseline in
gradual_edge_degradation, - stronger adversarial diagnosis from multi-mode plus trust than from scalar-only monitoring,
- explicit positive DSFB advantage margins in the hero rows where structural diagnosis matters,
- measurable trust suppression delay in adversarial and communication-loss cases,
- non-empty baseline and benchmark comparison tables rather than placeholder zeros.
Colab notebook
The notebook at notebooks/dsfb_swarm_colab.ipynb is designed to:
- bootstrap Rust in Colab if needed,
- locate or clone the repository,
- build
dsfb-swarmfrom source, - run the benchmark suite from scratch,
- locate the newest timestamped output directory,
- load CSV/JSON artifacts,
- display the hero figures, adversarial timing view, and supporting tables inline,
- display the hero benchmark rows inline,
- assemble a notebook-side PDF report of the Colab results,
- copy the notebook itself into the run’s report folder,
- write a JSON manifest for notebook-produced artifacts,
- create a zip archive containing the full artifact bundle,
- surface direct download links for the PDF, zip archive, and manifest at the end of the run.
When the notebook completes, the run’s report/ directory contains these Colab-specific outputs in addition to the Rust-generated report:
dsfb_swarm_colab_report.pdfdsfb_swarm_artifacts.zipcolab_artifact_manifest.jsondsfb_swarm_colab.ipynb
The Colab badge and notebook bootstrap default to https://github.com/infinityabundance/dsfb.git. You can still override that at runtime with DSFB_REPO_URL, DSFB_REPO_REF, or DSFB_REPO_ROOT.
Limitations
- The simulator is intentionally stylized rather than domain-specific.
- Trust is driven by deterministic residual and disagreement logic, not by a learned model.
- The PDF written by the Rust crate is a compact summary report; the notebook can regenerate a richer PDF bundle using the figure outputs.
- The benchmark suite is designed for demonstrative reproducibility, not for maximum numerical efficiency.
- Some scenario-level claims remain scenario-dependent: for example, adversarial runs often show earlier multi-mode detection without a clean
lambda_2-based visible-failure threshold.
Future extensions
- richer swarm kinematics and heading dynamics,
- explicit predictor correction loops per mode,
- stronger mode-shape alignment under clustered eigenvalues,
- more detailed graph-theoretic certificates,
- alternative trust policies and adversary models,
- tighter report/PDF integration with embedded figures.