You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
PR #27 (Sep 2025, bot-authored) implements an n-stage LocalCov algorithm but is now unmergeable: 204 commits behind main, conflicts in every file, CI results predate the Python 3.9 drop, and the code assumes the old 2D-only API. The semantic payload is small (~100 lines + tests), so the decision from the 2026-07 triage is to close #27 and re-implement on the current codebase. See the closing comment on #27 for the full assessment.
LocalCov.__call__ gains an optional precomputed distance matrix d: numpy.ndarray | None = None (defaults to squareform(pdist(X)) as today).
New module-level nstage_local_cov(X, *, k, n_stages):
Stage 1 runs the standard LocalCov(k)(X) with Euclidean distances.
Each subsequent stage computes the pairwise tangency distance matrix of the current ellipse cloud (pdist_tangency → squareform) and re-runs LocalCov with those distances for neighbour selection, iteratively amplifying anisotropic structure.
EllipseCloud.from_nstage_local_cov(X, *, k=5, n_stages=2) classmethod and a "nstage_local_cov" method string in the from_point_cloud dispatch.
Requirements for the re-implementation
Target the current n-dimensionalellcloud API (main has been generalised since the PR was written; do not assume (N, 2)).
Update the corresponding .pyi stubs; stubtest (with stubtest-allowlist.txt) must pass.
Tests: smoke test, n_stages < 1 → ValueError, and an n_stages=1 ≡ local_cov equivalence test (port the intent of tests/test_nstage_local_cov.py from PR Feat: Implement n-stage LocalCov algorithm #27).
Full CI checklist from AGENTS.md (black / flake8 / mypy / stubtest / pytest).
Do not port the noise from PR Feat: Implement n-stage LocalCov algorithm #27: the pyproject.toml version rollback, the broken absolute README links, and the unrelated build_tangency_cpp.py reformat.
Notes for implementing agents
Mandatory: read contrib/agent-skill/SKILL.md (and references/) before writing any experiment or test code that exercises the tangency solver — this is a specialised TDA/PH library and naive assumptions routinely fail.
Follow the release workflow in CONTRIBUTING.md: base the PR on the current release branch, not main.
Context
PR #27 (Sep 2025, bot-authored) implements an n-stage LocalCov algorithm but is now unmergeable: 204 commits behind
main, conflicts in every file, CI results predate the Python 3.9 drop, and the code assumes the old 2D-only API. The semantic payload is small (~100 lines + tests), so the decision from the 2026-07 triage is to close #27 and re-implement on the current codebase. See the closing comment on #27 for the full assessment.What the algorithm does (from PR #27)
LocalCov.__call__gains an optional precomputed distance matrixd: numpy.ndarray | None = None(defaults tosquareform(pdist(X))as today).nstage_local_cov(X, *, k, n_stages):LocalCov(k)(X)with Euclidean distances.pdist_tangency→squareform) and re-runsLocalCovwith those distances for neighbour selection, iteratively amplifying anisotropic structure.EllipseCloud.from_nstage_local_cov(X, *, k=5, n_stages=2)classmethod and a"nstage_local_cov"method string in thefrom_point_clouddispatch.Requirements for the re-implementation
ellcloudAPI (mainhas been generalised since the PR was written; do not assume(N, 2))..pyistubs;stubtest(withstubtest-allowlist.txt) must pass.n_stages < 1→ValueError, and ann_stages=1 ≡ local_covequivalence test (port the intent oftests/test_nstage_local_cov.pyfrom PR Feat: Implement n-stage LocalCov algorithm #27).AGENTS.md(black / flake8 / mypy / stubtest / pytest).pyproject.tomlversion rollback, the broken absolute README links, and the unrelatedbuild_tangency_cpp.pyreformat.Notes for implementing agents
contrib/agent-skill/SKILL.md(andreferences/) before writing any experiment or test code that exercises the tangency solver — this is a specialised TDA/PH library and naive assumptions routinely fail.CONTRIBUTING.md: base the PR on the current release branch, notmain.