Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Security policy

Supported versions

Security and silent numerical-integrity fixes are made for the latest published fcmaes-core crate and fcmaes-rust Python package. Check whether a suspected defect reproduces on the latest release when practical, but report a credible issue even if it was first observed on an older version. Older releases are not normally patched separately during the pre-1.0 series.

What is security-relevant?

For an optimization library, security includes the integrity of the search contract. A defect is security-relevant when normal API use can silently return a plausible but materially invalid result. Examples include:

  • memory-safety, denial-of-service, Python-buffer, FFI, parser, or dependency vulnerabilities;
  • malformed bounds, dimensions, populations, or result rows bypassing validation and corrupting optimizer state;
  • a returned point lying outside the documented bounds or a constrained optimizer silently reversing its feasibility convention;
  • objective/result association, ordering, or concurrent evaluation defects that attach a fitness value to the wrong candidate; and
  • deterministic seed, budget, or stopping defects that invalidate a promised reproducibility or resource-accounting contract without warning.

Ordinary stochastic variation, failure to find a global optimum, documented population-budget overshoot, expected optimizer termination, and a benchmark model’s stated approximation limits are not vulnerabilities by themselves. They may still be reported as correctness or documentation issues.

Reporting a vulnerability

Report vulnerabilities privately through the repository’s GitHub security-advisory form. Do not put exploit details, credentials, private keys, proprietary objective data, or sensitive optimization results in a public issue.

If private reporting is temporarily unavailable, open a public issue containing only a request for a private contact channel. Do not include the vulnerability details or sensitive reproducer in that issue.

A useful report contains:

  • the smallest non-sensitive objective and configuration that reproduce the problem;
  • the affected Rust API or Python function;
  • package version, feature flags, and relevant dependency versions;
  • the Rust/Python version, operating system, architecture, and worker count;
  • the observed result and documented expected behavior;
  • whether the failure is deterministic and which seed triggers it; and
  • the potential impact and whether the issue is already public.

Maintainers aim to acknowledge a private report within seven days and provide an initial assessment within fourteen days. These are best-effort targets for a volunteer-maintained project, not a service-level guarantee. Reporter and maintainer should coordinate disclosure until a fix or advisory is available. Credit will be included when requested.

Project safeguards

Hosted checks cover formatting, Clippy, workspace tests, Rustdoc, the declared minimum Rust version, Python bindings, clean package consumption, and the standalone tutorial protocols selected by CI. Dependency source, advisory, and license policies are checked with cargo-deny where configured.

The repository also preserves deterministic fixtures, equal-budget controls, decoded-result re-evaluation, typed failure paths, and raw benchmark artifacts for high-risk numerical changes. These checks reduce risk but do not constitute formal verification or guarantee that an optimizer will find a global optimum. Users remain responsible for independently validating bounds, objective and constraint signs, decoded results, and application-specific feasibility.