From 1d1ebd385efd53b6de56e8decac8e1944da20650 Mon Sep 17 00:00:00 2001 From: Oleg Sheynin Date: Sat, 25 Jul 2026 00:57:38 +0000 Subject: [PATCH] Release 0.0.9 --- .gitignore | 16 ++++++++++++-- AGENTS.md | 7 ++++++ CHANGELOG.md | 12 +++++++++++ CONTRIBUTING.md | 54 ++++++++++++++++++++++++++++++++++++++++++++++ data/.gitkeep | 1 + notebooks/.gitkeep | 1 + requirements.txt | 9 ++++++++ results/.gitkeep | 1 + scripts/.gitkeep | 1 + 9 files changed, 100 insertions(+), 2 deletions(-) create mode 100644 CONTRIBUTING.md create mode 100644 data/.gitkeep create mode 100644 notebooks/.gitkeep create mode 100644 requirements.txt create mode 100644 results/.gitkeep create mode 100644 scripts/.gitkeep diff --git a/.gitignore b/.gitignore index f4b3ddd..72099d0 100644 --- a/.gitignore +++ b/.gitignore @@ -4,7 +4,19 @@ __OLD__/ .specstory/ .history/ .vscode/ -data +*.py[cod] +.ipynb_checkpoints/ +.pytest_cache/ + +# Local environments +.venv/ +venv/ + +# Local test data and generated analysis results +data/* +!data/.gitkeep +results/* +!results/.gitkeep + cvttpy -results/ tmp/ diff --git a/AGENTS.md b/AGENTS.md index f6faffb..59c14a5 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -105,6 +105,10 @@ If verification cannot be run, report exactly what was skipped and why. - Update `CHANGELOG.md` for every release with the release version, release date, Git tag, and a concise summary of notable changes. +- Keep an `Unreleased` section at the top of `CHANGELOG.md` for changes that + have not been included in a tagged release yet. +- Move relevant entries from `Unreleased` into the dated release section when + creating a release, and leave `Unreleased` present for future changes. - Use release headers in `YYYY-MM-DD vMAJOR.MINOR.PATCH` form. - Use version numbers in `MAJOR.MINOR.PATCH` form. Start this repository at `0.0.1`. @@ -112,6 +116,9 @@ If verification cannot be run, report exactly what was skipped and why. exactly. For example, version `0.0.1` must be tagged as `v0.0.1`. - Create the Git tag only after the changelog and any release-related version changes are complete. +- When the user requests creating a release, treat that as explicit permission + to commit the release changes, create the matching Git tag, and push both the + branch and tag. - Do not push release commits or tags unless the user explicitly requests it. ## Mandatory background review diff --git a/CHANGELOG.md b/CHANGELOG.md index a0ebce5..384aa32 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,18 @@ All notable changes to this project are documented in this file. +## Unreleased + +- No unreleased changes yet. + +## 2026-07-25 v0.0.9 + +- Added contributing guidance and Python dependency declarations. +- Added placeholder files for active project directories. +- Updated ignore rules for local data, generated results, caches, and local + environments. +- Documented unreleased changelog handling and release push behavior. + ## 2026-07-25 v0.0.1 - Established the initial repository structure and project guidance. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..aecb15b --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,54 @@ +# Contributing + +## Setup + +Use the shared Python 3.12 virtual environment: + +```bash +source ~/.pyenv/python3.12-venv/bin/activate +python -m pip install -r requirements.txt +``` + +If you install another package for repository work, add its direct dependency +to `requirements.txt`. + +## Repository layout + +- Put notebooks in `notebooks/`. +- Put reusable Python and Bash utilities in `scripts/`. +- Put local input files in `data/`. +- Put generated artifacts in `results/`. + +The contents of `data/` and `results/` are ignored. Do not force-add test +databases, raw test results, generated exports, or notebook outputs. + +`__SAV__/` is unrelated legacy material and is outside the active project. + +## Working with notebooks + +Notebooks must execute from top to bottom in a fresh kernel. Use relative paths, +document data assumptions, and move reusable logic into tested scripts. + +Before handing off a change: + +```bash +python -m pytest +python -m pytest --nbmake notebooks +jupyter nbconvert --ClearOutputPreprocessor.enabled=True --inplace path/to/notebook.ipynb +``` + +Run only the checks relevant to the files present in the repository, and report +anything that could not be run. + +## Review requirement + +Python scripts, Bash scripts, and notebook code-cell changes require review and +approval by a separate background agent. Address material findings and rerun +affected checks before completion. If a reviewer is unavailable, the change may +be handed off only with the status `review pending`. + +Documentation, dependency declarations, and ignore rules do not require this +background review when no Python, Bash, or notebook code cells changed. + +The `master` branch is not protected. That does not remove the review +requirement or authorize an agent to commit or push without an explicit request. diff --git a/data/.gitkeep b/data/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/data/.gitkeep @@ -0,0 +1 @@ + diff --git a/notebooks/.gitkeep b/notebooks/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/notebooks/.gitkeep @@ -0,0 +1 @@ + diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..1870b2c --- /dev/null +++ b/requirements.txt @@ -0,0 +1,9 @@ +# Interactive analysis +ipykernel>=6.29,<7 +jupyter>=1.1,<2 +nbformat>=5.10,<6 +pandas>=2.2,<3 + +# Verification +nbmake>=1.5,<2 +pytest>=8,<9 diff --git a/results/.gitkeep b/results/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/results/.gitkeep @@ -0,0 +1 @@ + diff --git a/scripts/.gitkeep b/scripts/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/scripts/.gitkeep @@ -0,0 +1 @@ +