Metadata-Version: 2.4
Name: fedora-fl-security
Version: 2.1.0b2
Summary: Security planning, diagnostics, and evidence layer for federated learning
Author-email: FedoRA Contributors <sam.urmian@gmail.com>
License-Expression: Apache-2.0
Project-URL: Homepage, https://github.com/mlgorithm/FedoRA
Project-URL: Repository, https://github.com/mlgorithm/FedoRA
Project-URL: Bug Tracker, https://github.com/mlgorithm/FedoRA/issues
Requires-Python: >=3.10
Description-Content-Type: text/markdown
Requires-Dist: fedora-fl==2.1.0b2
Requires-Dist: numpy<3.0.0,>=1.24.0
Requires-Dist: typer<1.0.0,>=0.12.0
Provides-Extra: test
Requires-Dist: pytest<10.0.0,>=9.0.3; extra == "test"

# fedora-fl-security

`fedora-fl-security` is a thin public facade for FedoRA's security planning,
diagnostics, and evidence APIs. It re-exports the implementation shipped in
`fedora-fl` and depends on the exact same version of that distribution.

The `fedora_security` namespace exposes threat models, defense recommendations,
aggregation/privacy helpers, FedoRA/UFCG planning, capability diagnostics, proof
workflows, receipts, and versioned evidence schemas. Its planning outputs can
support review of a FedoRA, Flower, FLARE, or custom deployment; each runtime
still needs its own validated mechanisms and operational controls.

## Install

```bash
pip install "fedora-fl-security==2.1.0b2"
```

This command applies after publication. For the unpublished candidate, install
the matching base and facade wheels supplied with the review packet.

For source development, run these commands from this directory to install the
implementation and then the facade:

```bash
pip install -e ..
pip install -e .
```

All three FedoRA distributions release in lockstep. The security facade does not
turn the overall beta library or an experimental backend into a certified
production deployment.

## Use

```python
from fedora_security import ThreatModel, run_proof_workflow

threat = ThreatModel(
    byzantine_fraction=0.2, model_poisoning=True, privacy_level="strong",
)
recommendation = threat.recommend_defenses()
bundle = run_proof_workflow(
    scenario_name="byzantine-privacy", outdir="fedora_proof",
    num_clients=20, num_rounds=3,
)
```

The proof compares aggregation defenses on one synthetic cohort and produces
inspectable evidence. DP and secure aggregation in its plan are recommendations;
this proof does not execute those mechanisms or certify a multi-round privacy
budget. The DP APIs separately require a trusted coordinator and the documented
fixed-roster adjacency. External audits, workload validation, and concrete
runtime review remain prerequisites for stronger deployment claims.
