Developer guide¶
Static typing¶
The 0.1 release ships useful inline types and a strict staged gate for 26 foundation/public-contract modules:
make typecheck-core
make typecheck-all intentionally exposes the remaining annotation and numeric
array-typing debt in the experimental family and estimator implementations.
Passing the core gate is not represented as whole-package strict typing.
Read the architecture guide before extending PyMixEF.
New families provide support, normalized log_prob, a CDF where censoring needs
it, controlled random generation, parameter names, and derivative behavior. New
covariance kernels must validate inputs, return a positive-definite matrix by
construction (or document semidefinite behavior), simulate, and expose the
unconstrained-to-natural mapping.
New engines implement the backend Protocol and common payload, register static
compatibility, return a structured convergence object, and declare a
reproducibility class. The current reusable fit-contract suite covers every
built-in backend and fails if a newly registered built-in has no case. A new
backend must pass pymixef.backends.base.validate_payload() and those
behavior checks. ARCH-003 nevertheless remains open because the Backend
Protocol does not yet expose separate objective, gradient, optional
Hessian-vector product, and simulation contracts.
Numerical changes require independent derivative/reference tests, pathology tests, a change-impact category, and targeted benchmark reruns. Public model semantics and IR changes require an RFC and schema migration.