Skip to content

Release KoopmanGraph 0.15.0 (identification and evidence surfaces) - #56

Merged
tjkessler merged 3 commits into
mainfrom
feature/v0.15.0
Aug 21, 2026
Merged

Release KoopmanGraph 0.15.0 (identification and evidence surfaces)#56
tjkessler merged 3 commits into
mainfrom
feature/v0.15.0

Conversation

@tjkessler

@tjkessler tjkessler commented Aug 21, 2026

Copy link
Copy Markdown
Owner

Summary

  • Ship the 0.15.0 increment on the 0.14 stack: opt-in closed-form identification, identity-bound benchmark manifests (koopman-graph benchmark run / verify), polynomial graph filters, Nyquist / conditioning diagnostics, and labeled research MVPs (graph-state closure, cochain dynamics, matrix-free algebra, residual-tube MPC).
  • Keep homogeneous scientific defaults and the linear latent operator contract (koopman=None still selects "pernode"). FORMAT_VERSION stays 1. The last archived Zenodo DOI remains 10.5281/zenodo.21926723 until a 0.15 tag mints a version DOI.
  • Fold Dependabot updates from Bump aiohttp from 3.14.2 to 3.14.3 #46 and Bump astral-sh/setup-uv from 9.0.0 to 10.0.1 #55: locked aiohttp 3.14.2 → 3.14.3 (GHSA-cq5v-8q36-5273) and astral-sh/setup-uv 9.0.0 → 10.0.1 in CI and release workflows (including the new benchmark-smoke job).
  • Leave GitHub Release tag, PyPI publish, and Zenodo DOI refresh as post-merge maintainer steps.

Type of change

  • New feature (non-breaking change that adds functionality)
  • Documentation
  • Refactor / tooling / CI

Checklist

  • I ran pytest tests/ -v locally and all tests pass
  • I ran ruff check src/ tests/ and ruff format --check src/ tests/ locally
  • I added or updated tests for my changes (or explained why not applicable)
  • I updated documentation only if this PR changes the public API (docstrings, README, Sphinx pages, tutorials)
  • My changes follow the code style described in CONTRIBUTING.md

Test plan

  • CI green on this PR (lint, Ubuntu matrix, macOS smoke, docs, notebook shards as path-filtered, benchmark-smoke)
  • Local ruff check / ruff format --check and full pytest tests/ -n auto --cov=koopman_graph --cov-fail-under=90 (3269 passed, 97.31% package coverage; every measured source file ≥90%)
  • Local sphinx-build -W / cd docs && make html
  • koopman-graph benchmark verify on the three tracked benchmarks/v0.15/ smoke summaries
  • After merge: tag v0.15.0, confirm release.yml publishes to PyPI, then update the Zenodo version DOI in CITATION.cff / README / paper.md

tjkessler and others added 2 commits August 21, 2026 08:13
Ship opt-in closed-form identification, identity-bound benchmarks, and labeled research MVPs without changing 0.14 scientific defaults.

Co-authored-by: Cursor <cursoragent@cursor.com>
Close the high-severity aiohttp parser advisory and fold the open Dependabot action pin into the 0.15 release branch.

Co-authored-by: Cursor <cursoragent@cursor.com>
CLI and docs extras must import without SciPy; the fat lstsq projector
was GELS-dependent on Linux and left an O(1) residual on later rows.

Co-authored-by: Cursor <cursoragent@cursor.com>
@codecov

codecov Bot commented Aug 21, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 97.13376% with 54 lines in your changes missing coverage. Please review.

Files with missing lines Patch % Lines
src/koopman_graph/benchmark/schema.py 97.01% 7 Missing and 4 partials ⚠️
src/koopman_graph/baselines/havok.py 90.12% 5 Missing and 3 partials ⚠️
src/koopman_graph/data/batching.py 91.25% 4 Missing and 3 partials ⚠️
src/koopman_graph/baselines/gedmd.py 93.93% 4 Missing and 2 partials ⚠️
src/koopman_graph/data/conditioning.py 89.83% 4 Missing and 2 partials ⚠️
src/koopman_graph/analysis/causal_intervention.py 97.51% 2 Missing and 2 partials ⚠️
src/koopman_graph/adaptation/joint_observer.py 96.59% 2 Missing and 1 partial ⚠️
src/koopman_graph/data/graph_state.py 97.00% 2 Missing and 1 partial ⚠️
src/koopman_graph/analysis/criticality.py 97.89% 1 Missing and 1 partial ⚠️
src/koopman_graph/baselines/hankel_dmd.py 97.53% 1 Missing and 1 partial ⚠️
... and 1 more
Files with missing lines Coverage Δ
src/koopman_graph/__init__.py 100.00% <100.00%> (ø)
src/koopman_graph/adaptation/__init__.py 100.00% <100.00%> (ø)
src/koopman_graph/adaptation/observer.py 99.15% <ø> (ø)
src/koopman_graph/analysis/__init__.py 100.00% <100.00%> (ø)
src/koopman_graph/analysis/causal.py 100.00% <ø> (ø)
src/koopman_graph/analysis/conditioning.py 100.00% <100.00%> (ø)
src/koopman_graph/analysis/hodge_modes.py 100.00% <100.00%> (ø)
src/koopman_graph/analysis/memory.py 100.00% <100.00%> (ø)
src/koopman_graph/analysis/spectrum.py 97.50% <100.00%> (+0.01%) ⬆️
src/koopman_graph/baselines/__init__.py 100.00% <100.00%> (ø)
... and 94 more

... and 2 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@tjkessler
tjkessler merged commit 48bf83c into main Aug 21, 2026
14 checks passed
@tjkessler
tjkessler deleted the feature/v0.15.0 branch August 21, 2026 12:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant