Problem to Fix
The main sync engine is a Python 3 script distributed as sync.sh. This causes editors, linters, and GitHub's language detection to misidentify it as a shell script, and confuses contributors who open the file expecting Bash.
Why it Matters
The misleading extension undermines tooling (syntax highlighting, type checking, formatters, test discovery) and contributor experience. It also prevents GitHub from accurately reflecting the project's tech stack in the repository language bar.
General Approach
Rename sync.sh to sync.py and update every reference across the project: internal marker strings, documentation, CI workflows, pre-commit hooks, the CONTRIBUTING guide, adapter templates, and installation instructions. Add a note that Python 3.8+ is required (stdlib only, no pip install needed). This is a breaking change — all consumer projects using CodeCannon as a submodule will need to update their references from sync.sh to sync.py.
Complexity
Verification / QA effort: significant
The rename touches documentation, CI, generated marker lines, and the sync script itself. Every reference must be found and updated, and at least one consumer project should be tested end-to-end to confirm the submodule workflow still works after the rename.
Acceptance Criteria
sync.sh is renamed to sync.py and is executable
- All internal references updated: marker strings, docstring, error messages
- All documentation updated: README, docs/, CONTRIBUTING guide
- CI workflows updated to reference
sync.py
- Pre-commit hook (if applicable) updated to reference
sync.py
- Installation and quick-start instructions note the Python 3.8+ requirement (stdlib only)
- Running
CodeCannon/sync.py works identically to the old CodeCannon/sync.sh
Problem to Fix
The main sync engine is a Python 3 script distributed as
sync.sh. This causes editors, linters, and GitHub's language detection to misidentify it as a shell script, and confuses contributors who open the file expecting Bash.Why it Matters
The misleading extension undermines tooling (syntax highlighting, type checking, formatters, test discovery) and contributor experience. It also prevents GitHub from accurately reflecting the project's tech stack in the repository language bar.
General Approach
Rename
sync.shtosync.pyand update every reference across the project: internal marker strings, documentation, CI workflows, pre-commit hooks, the CONTRIBUTING guide, adapter templates, and installation instructions. Add a note that Python 3.8+ is required (stdlib only, no pip install needed). This is a breaking change — all consumer projects using CodeCannon as a submodule will need to update their references fromsync.shtosync.py.Complexity
Verification / QA effort: significant
The rename touches documentation, CI, generated marker lines, and the sync script itself. Every reference must be found and updated, and at least one consumer project should be tested end-to-end to confirm the submodule workflow still works after the rename.
Acceptance Criteria
sync.shis renamed tosync.pyand is executablesync.pysync.pyCodeCannon/sync.pyworks identically to the oldCodeCannon/sync.sh