# Changelog
All notable changes to `moonlight-homology` are documented here.
## 0.1.0.0 - 2026-08-21
- Initial public release.
- Finite chain complexes with validated boundary-incidence matrices.
- Phase-gated Betti and spectral-sequence capabilities.
- Field-rank, GF2-rank, and Smith-normal-form homology backends.
- Effective-homology reductions with sampled law witnesses.
- Exact and spectral sequence scaffolding, bidegrees, formal maps, pages, and
rational spectral-family construction.
- Topological carriers: 2D cell complexes, graph skeletons, macro-scaffolds,
persistence helpers, harmonic summaries, and graph spectral helpers.
- Discrete Morse and Block-Schur reductions.
- Public `moonlight-homology-laws` sublibrary for boundary, reduction, normalization,
and determinism harnesses.
- Split into private implementation sublibraries (`moonlight-homology-chain`,
`moonlight-homology-matrix`, `moonlight-homology-topology`,
`moonlight-homology-sequence`), a curated public facade, and the public laws
sublibrary; external proof-assistant certification was removed from the package.
- Consolidated the old Criterion benchmark entrypoints into a single
`moonlight-homology-bench` `tasty-bench` target matching `moonlight-category`.
- Added Apple M4 Pro benchmark documentation at `docs/BENCHMARKS-m4-pro.md`, with
large sparse spectral cases gated behind explicit environment variables.
- Pre-Hackage hardening pass (failure-mode audit):
- Field-rank backends treat degrees above `maxHomologicalDegree` as zero by
convention instead of consulting the raw incidence function at `max + 1`,
which silently corrupted the top homology group for malformed inputs.
- `validatedColumnAt` returns legal columns of zero-row matrices (the
transpose-based path lost them).
- Non-nilpotent boundaries surface as `ChainComplexNilpotenceViolation d` on
every detection path (checked construction, field-rank gate, Morse gate);
previously the same failure appeared as three different constructors.
- `restrictComplex` materializes each retained degree exactly once and
propagates materialization failures instead of collapsing them into
silently empty boundaries.
- Sparse echelon rows are compacted at the reduction boundary, eliminating
phantom zero pivots from uncompacted input; redundant double reversal
removed from RREF canonicalization.
- Morse: DAG machinery extracted to
`Moonlight.Homology.Pure.Topology.Morse.Digraph`; the refined descent
gates its first stage and trusts theorem-guaranteed later stages instead
of re-validating per stage; the gradient path-weight oracle is shared per
upper cell; nilpotence violations are no longer misreported as
`ReductionInclusionChainMapLaw`.
- Performance: persistence boundary columns and BlockSchur law sweeps index
entries by source; filtration-ordered spectral reduction uses vectors
instead of per-lookup list walks; `nub` quadratics removed from Reeb arc
seeds, spectral support levels, and torsion-order normalization; strict
accumulators for persistence state, duplicate-cell detection, and ordered
entry canonicalization; `materializeBoundary` evaluates the user boundary
function once per basis element.
- Documentation: realization budget floor semantics, spectral input
scrubbing contract, `subtractFromDiagonal` orientation, and the
forward-looking bi-parameter persistence vocabulary are stated explicitly;
duplicate export block removed from the `Chain` facade.
- Packaging: compile-fixture files ship in the sdist via
`extra-source-files`; upper bounds pinned for test and benchmark
dependencies.