diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..bd5590b --- /dev/null +++ b/.gitignore @@ -0,0 +1,21 @@ +node_modules/ +.npmrc +.env +.env.* +__tests__/ +coverage/ +.nyc_output/ +dist/ +build/ +.cache/ +*.log +.DS_Store +tmp/ +.tmp/ +__pycache__/ +*.pyc +.venv/ +venv/ +*.egg-info/ +.pytest_cache/ +READY_TO_PUBLISH diff --git a/AGENTS.md b/AGENTS.md new file mode 100644 index 0000000..ae7c45c --- /dev/null +++ b/AGENTS.md @@ -0,0 +1,46 @@ +**Architecture** + +MetaCA Studio is a small Python-first toolkit to prototype federated evolutionary cellular automata. The repository's current scope is a well-focused, test-covered core providing: + +- CARule: rule representation with deterministic fingerprinting for deduping across federated agents. +- CAGrid: 2D toroidal grid with Moore and Von Neumann neighborhoods and a step operator applying CARule transition tables. +- TournamentSelector: an evolutionary selection primitive exposing top-k shares for gossip-style federated exchange. + +This agent/design follows a layered architecture: + +- metaca.py: core domain objects and algorithms (kept small and well-tested). +- pyproject.toml: packaging metadata to allow building sdist/wheel. +- test.sh: unified test driver used by CI and contributors. + +Future work should add separate modules for differentiable simulators (JAX/PyTorch), federation registry (Graph-of-Contracts sketch), adapters (NumPy/JAX/torch), and a lightweight governance ledger. + +**Tech stack** + +- Python 3.8+ (core language) +- Packaging: setuptools + wheel via PEP 517/518 (pyproject.toml) +- Tests: simple shell-driven assertions (test.sh). Replace with pytest as codebase grows. + +**Testing commands** + +Run the project's test suite and build verification with: + +``` +./test.sh +``` + +test.sh will run a packaging build (python3 -m build) to verify pyproject metadata and then execute the unit-style tests included in the script. + +**Contribution rules** + +- Keep changes minimal and well-scoped. Prefer small, reviewable patches over large rewrites. +- Add tests for every new feature or bugfix using the pattern in test.sh. If you introduce dependencies, add them to pyproject.toml. +- Do not modify files authored by other contributors without discussion. +- Run `./test.sh` locally before opening PRs. + +**Release & publishing** + +This repository is not marked READY_TO_PUBLISH in this iteration. When claiming readiness: + +- Ensure README.md contains a complete project summary and packaging metadata references. +- Ensure pyproject.toml contains accurate metadata and licensing information. +- Add an empty file READY_TO_PUBLISH to the repository root only when the project fully implements the published specification and all tests pass. diff --git a/README.md b/README.md index 6d76f25..9f30d9d 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,21 @@ -# idea178-metaca-studio +# MetaCA Studio (idea178-metaca-studio) -Source logic for Idea #178 \ No newline at end of file +MetaCA Studio is a Python-first toolkit to prototype federated evolutionary cellular automata. + +This repository contains a focused core implementing: + +- CARule: deterministic fingerprinted CA rule representation +- CAGrid: 2D toroidal grid with Moore and Von Neumann neighborhoods +- TournamentSelector: evolutionary selection primitive with top-k sharing for federated workflows + +The project is intentionally small and test-covered so it can be extended by other contributors with differentiable simulators, adapters (NumPy/PyTorch/JAX), and a Graph-of-Contracts-style registry. + +See AGENTS.md for architecture, testing commands, and contribution guidance. + +Quick start + +``` +./test.sh +``` + +This runs a package build verification followed by the unit-style tests. diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..2eafe58 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,12 @@ +[build-system] +requires = ["setuptools", "wheel"] +build-backend = "setuptools.build_meta" + +[project] +name = "metaca-studio" +version = "0.1.0" +description = "MetaCA Studio - Federated Evolutionary Design Toolkit for Cellular Automata (partial MVP)" +readme = "README.md" +requires-python = ">=3.8" +authors = [ { name = "MetaCA Contributors" } ] +dependencies = [] diff --git a/test.sh b/test.sh index d16d836..6d4a3e4 100755 --- a/test.sh +++ b/test.sh @@ -3,6 +3,10 @@ set -e echo "=== MetaCA Studio Test Suite ===" +# Verify packaging metadata can build an sdist/wheel before running tests +echo "Running build verification (python3 -m build) ..." +python3 -m build + python3 -c " from metaca import CARule, CAGrid, TournamentSelector @@ -100,4 +104,4 @@ print() print('All 9 tests passed!') " -echo "=== All tests passed ===" \ No newline at end of file +echo "=== All tests passed ==="