This project uses a manually maintained engine version. The source of truth is
__version__ in cgr_src/common.py; the shipped cgr.py artifact is generated
from that source.
Template versions declared inside files under repo/ are separate. They describe
template compatibility and are not tied to the engine version.
Use semantic versioning for the engine version:
| Change type | Increment | Examples |
|---|---|---|
| Bug fix or internal-only fix | Patch | Fix resume behavior, installer bug, docs typo that does not change behavior |
| Backward-compatible feature | Minor | New CLI command, new .cgr syntax that preserves existing files, new output field |
| Breaking change | Major | Incompatible syntax change, state format change without migration, removed CLI behavior |
If a change spans multiple categories, use the highest applicable increment.
-
Decide the next version from the policy above.
-
Edit
__version__incgr_src/common.py. -
Rebuild the shipped artifact:
python3 cgr_dev.py apply build.cgr --no-resume
-
Confirm both development and shipped entrypoints report the same version:
python3 cgr_dev.py version python3 cgr.py version
-
Run the core verification suite:
python3 -c "import py_compile; py_compile.compile('cgr.py', doraise=True)" python3 -m pytest test_commandgraph.py -x -q -
Validate the root feature-exercise graphs when the change touches parsing, resolver behavior, execution, state, apply output, or templates:
python3 cgr.py validate nginx_setup.cg python3 cgr.py validate nginx_setup.cgr python3 cgr.py validate webserver.cg --repo ./repo python3 cgr.py validate webserver.cgr --repo ./repo python3 cgr.py validate parallel_test.cgr python3 cgr.py validate multinode_test.cgr python3 cgr.py validate multinode_test.cg python3 cgr.py validate system_audit.cgr --repo ./repo python3 cgr.py validate api_integration.cgr
-
Commit the source changes and regenerated
cgr.pytogether. -
Tag releases as
vX.Y.Zafter the versioned commit is ready.
install.sh does not fetch remote release metadata. When it says it will install
or upgrade to the latest CommandGraph version, it means the version reported by
this checkout's local cgr.py.