Skip to content

Commit f1a9931

Browse files
Add What's New in 2.0 section to README
Briefly describe the per-node evolvable time constants change for CTRNNs, note the breaking API change, and link to the detailed CTRNN-CHANGES.pdf writeup. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent 94b4258 commit f1a9931

File tree

2 files changed

+30
-0
lines changed

2 files changed

+30
-0
lines changed

README.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,14 @@ For further information regarding general concepts and theory, please see the [p
1414
`neat-python` is licensed under the [3-clause BSD license](https://opensource.org/licenses/BSD-3-Clause). It is
1515
currently only supported on Python 3.8 through 3.14, and pypy3.
1616

17+
## What's New in 2.0 ##
18+
19+
The CTRNN (Continuous-Time Recurrent Neural Network) implementation now supports **per-node evolvable time constants**. In v1.x, all nodes shared a single fixed time constant passed at network creation time. In v2.0, each node carries its own time constant as an evolved gene attribute, allowing the network to operate across multiple timescales simultaneously.
20+
21+
This is a breaking API change: `CTRNN.create(genome, config, time_constant)` is now `CTRNN.create(genome, config)`. Existing feedforward and discrete-time recurrent configurations require no changes.
22+
23+
For details on the change, its motivation, quantitative impact, and migration guide, see [CTRNN-CHANGES.pdf](examples/lorenz-ctrnn/docs/CTRNN-CHANGES.pdf).
24+
1725
## Features ##
1826

1927
* Pure Python implementation with no dependencies beyond the standard library

progress-20260302.md

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -165,3 +165,25 @@ Moved all Lorenz experiment documentation from the repo root into `examples/lore
165165
- **Formal tone for CTRNN-CHANGES.md:** targeted at academic users who need to understand exactly what changed in the CTRNN implementation and why. Includes the state update equation in proper notation, the numerical stability constraint (dt/tau < ~1 for explicit Euler), and a migration guide with code examples.
166166
- **PDF via pandoc + xelatex:** used a separate LaTeX preamble file for fancyhdr, titlesec, booktabs styling rather than embedding complex multi-line strings in YAML front matter (which pandoc 3.1.3 struggles with).
167167
- **Docs directory under lorenz-ctrnn example:** keeps the experiment-specific documentation co-located with the example code rather than cluttering the repo root.
168+
169+
---
170+
171+
## Test publish v2.0.0 on TestPyPI and README update
172+
173+
### Summary
174+
Built and published neat-python 2.0.0 to TestPyPI. Verified the install in a temporary venv: version string, CTRNN.create() signature, DefaultNodeGene attributes, and config defaults relaxation all check out. Added a "What's New in 2.0" section to README.md.
175+
176+
### TestPyPI publish
177+
- Built with `python3 -m build`: sdist (124 KB) + wheel (53 KB)
178+
- `twine check` passed on both artifacts
179+
- Published to https://test.pypi.org/project/neat-python/2.0.0/
180+
- Test install in a fresh venv confirmed: version 2.0.0, `CTRNN.create(genome, config)` signature, `time_constant` in DefaultNodeGene attributes, config defaults relaxation returns default for missing params with non-None defaults
181+
- Note: setuptools emits a deprecation warning about `project.license` as a TOML table — should switch to a SPDX string before 2027-02-18
182+
183+
### README update
184+
- Added "What's New in 2.0" section between "About" and "Features"
185+
- Three paragraphs: what changed (per-node evolvable time constants), the breaking API change (`CTRNN.create` signature), and a link to `CTRNN-CHANGES.pdf` for full details
186+
- Deliberately kept brief — the PDF has the formal writeup for academic users
187+
188+
### Files Modified
189+
- `README.md` — added "What's New in 2.0" section

0 commit comments

Comments
 (0)