GROUPOID is a research prototype, not a production federated learning system. The following limitations apply.
- No communication protocol between clients and server.
- No support for distributed training across machines.
- No data partitioning or client simulation beyond test fixtures.
- The aggregation pipeline operates on numpy arrays, not neural network parameters in a training loop.
- No differential privacy mechanism is implemented.
- Opacus and TenSEAL are listed as optional dependencies for future work but are not integrated into any code path.
- No privacy guarantees of any kind are provided.
- The Karcher mean computation delegates to geomstats FrechetMean. Convergence depends on the manifold and point distribution.
- H^1 computation uses cycle basis of the undirected graph. This is correct for 1-dimensional nerve complexes but does not generalize to higher-dimensional simplicial complexes without modification.
- H^1 requires a fully specified cocycle: every edge of every basis
cycle must have a transport map in one direction or the other (the
reverse direction is inverted). A cycle's holonomy is the ordered
product over all of its edges, so if any edge map is missing the
holonomy is undefined.
compute_h1raisesIncompleteCocycleErrornaming the missing edge rather than forming a meaningless partial product (which would otherwise be reported as a false (in)consistency). - Sheaf Laplacian construction assumes uniform stalk dimension.
- Parallel transport approximations (Schild's ladder, pole ladder) are discrete approximations. The pole ladder matches geomstats' analytic parallel transport closely in direction (cosine > 0.999 on a 60-degree S^2 hop) but does not converge to zero error as rungs increase; it plateaus at a small residual (~0.02 here) and drifts slightly off the endpoint tangent plane. Schild's ladder is markedly coarser (cosine ~0.98 on the same hop).
- Persistent homology Betti numbers are degenerate under the default
filtration.
compute_persistencecounts only bars that die at infinity, so under the defaultthresh=inf(used bytrack_divergence) the Vietoris-Rips complex is fully connected andbetti_0 == 1,betti_1 == 0regardless of the underlying topology. The informative loop signal lives inmax_persistence/ the finite bars; meaningful component counts require passing a finitemax_edge_lengthbetween the intra- and inter-cluster scales. - No formal convergence rate analysis exists for the groupoid aggregation method.
- Requires
numpy < 2.0due to geomstats compatibility. - Requires
scipy < 1.14for the same reason. - The
ripserandpersimpackages may have build issues on some platforms (C++ compilation required). torch,pymanopt,POT, andeinopsare declared as required runtime dependencies but are not imported by any current code path (the full test suite passes with all four uninstalled). Installinggroupoidtherefore pulls in packages -- most notablytorch-- that the current code does not use. Thetorchadvisory tracked in SECURITY.md applies to the installed dependency, not to any code path GROUPOID exercises.
- All 9 modules have test coverage. The committed suite reaches 100% line
and branch coverage of the
groupoidpackage on Python 3.10-3.12, enforced in CI (--cov-branch --cov-fail-under=100). Two unreachable defensive guards and aTYPE_CHECKINGimport are excluded via# pragma: no coverwith justifications. - Coverage is not validation. The transport and persistence modules are
validated against ground truth (analytic parallel transport;
known-topology point clouds) and are wired into the aggregation
pipeline (
register_transport_from_points; the opt-intrack_divergenceflag). The optimizer module is validated for descent to a known target on S^2 and for parallel-transported moment accumulators, but it has no general convergence-rate analysis and is not integrated into the pipeline. - No end-to-end test with real neural network training exists.
- Property-based tests use 500 examples per property, which provides reasonable but not exhaustive coverage of edge cases.