9.3 KiB
id, type, title, domain, repo, status, owner, topic_slug, created, updated, state_hub_workstream_id
| id | type | title | domain | repo | status | owner | topic_slug | created | updated | state_hub_workstream_id |
|---|---|---|---|---|---|---|---|---|---|---|
| CYA-WP-0004 | workplan | Developer Installation from Git and Release Distribution Packaging | capabilities | can-you-assist | done | grok | foerster-capabilities | 2026-05-27 | 2026-05-27 | 7913b919-d76b-4374-bdc6-0330fe941666 |
CYA-WP-0004: Developer Installation from Git and Release Distribution Packaging
Goal
Enable two important installation and distribution experiences for can-you-assist (cya):
-
Easy installation from development head
Anyone (especially the primary user and contributors) can install the absolute latest code directly from the git repository with a simple, reliable command, including all current features and fixes. -
Repeatable release packaging
Provide a clear, low-friction process to cut versions and produce installable distribution packages (sdist + wheel) that others can use viapip installwithout needing to clone the repository or understand the development setup.
This workplan addresses the current gap where only pip install -e . (editable development install) is supported, and there is no documented or automated path for either "bleeding edge" installs or proper releases.
Background & References
- Current packaging is minimal (
pyproject.tomlusing setuptools with a staticversion = "0.1.0"). - Editable development install (
pip install -e .) works and is documented in README and AGENTS.md. - No support yet for
pip install git+https://...in a robust way. - No versioning strategy, no release process, no
buildfrontend usage, and no distribution artifacts. - The project has matured through CYA-WP-0001 (MVP), 0002 (Memory), and 0003 (Contextual Activation + Retrospection), making proper distribution increasingly important.
- AGENTS.md and README currently only document the editable development path.
Non-Goals (for this slice)
- Publishing packages to PyPI (the output of this workplan should be usable with a future PyPI publication step).
- Complex multi-platform CI matrix or release automation beyond a solid local + basic CI foundation.
- Supporting ancient Python versions or exotic packaging backends.
- Creating a full "release engineering" platform (this is scoped to getting reliable dev-head + released packages working).
Task Breakdown
T01 — Audit current packaging state and define requirements
id: CYA-WP-0004-T01
status: done
priority: high
state_hub_task_id: "018d0c4c-948e-4cd6-9a50-92a83725df18"
started: "2026-05-27 ralph iter 1"
completed: "2026-05-27"
Done — produced docs/packaging-audit-and-requirements.md.
- Full audit of
pyproject.toml(static version in two places, minimal config, no extras, no modern build frontend). - Documented gaps for both "install from dev head" and "release packaging".
- Clear requirements defined.
- Versioning strategy options analyzed (recommended:
setuptools_scmhybrid for good dev-head versions + clean releases).
Acceptance criteria met:
- Gap analysis + requirements document created.
- Versioning options documented for decision in T02.
T02 — Establish a sustainable versioning strategy
id: CYA-WP-0004-T02
status: done
priority: high
state_hub_task_id: "0728680e-f9a9-4229-afcc-6c4d42d2e447"
started: "2026-05-27 ralph iter 2"
completed: "2026-05-27"
Done — implemented setuptools_scm hybrid approach.
pyproject.tomlnow uses dynamic versioning withsetuptools_scm.- Added
src/cya/_version.py(generated, gitignored). - Updated
src/cya/__init__.pyto import__version__from the generated file (with fallback). - Added
_version.pyto.gitignore. - Dev-head installs will now produce versions like
0.2.0.devN+g<hash>. - Releases will be clean (once we tag).
Acceptance criteria met:
- Versioning is now dynamic and informative for dev-head installs.
- Clean path for future release versions.
T03 — Make reliable installation from development head possible
id: CYA-WP-0004-T03
status: done
priority: high
state_hub_task_id: "14e085dd-847a-4678-a1e4-abe5e3c369aa"
started: "2026-05-27 ralph iter 3"
completed: "2026-05-27"
Done.
- Added
[project.optional-dependencies]devandtestinpyproject.toml. - Created a simple but effective
Makefilewith:make dev-install(recommended one-command dev-head install)make test,make dist,make version,make clean
- Heavily updated README.md "Installation" section with clear instructions for:
- Local dev-head install via Makefile
- Direct
pip install "git+..."from GitHub - Future released packages
- Updated AGENTS.md Commands section to reference the new
make dev-installflow. - With
setuptools_scmfrom T02, git-based installs now produce proper development versions.
Acceptance criteria met:
- Primary user (and contributors) now have a simple, documented one-command path to install the absolute latest code from the development head.
- The installed version will clearly show it is a development version.
T04 — Enable clean building of distribution packages
id: CYA-WP-0004-T04
status: done
priority: high
state_hub_task_id: "d49a3362-865f-4397-b127-372a2aa2c4a2"
started: "2026-05-27 ralph iter 4"
completed: "2026-05-27"
Done.
- Created
MANIFEST.infor proper sdist inclusion. - Improved
pyproject.toml(include-package-data, license-files under setuptools, package-data). python -m buildsuccessfully produces clean sdist + wheel.- Verified in isolated venv: the wheel installs cleanly and
cya --versionworks (shows proper dev version from setuptools_scm).
Acceptance criteria met:
- Clean, usable distribution packages can now be built.
- They install and run correctly in fresh environments.
T05 — Create a lightweight release process
id: CYA-WP-0004-T05
status: done
priority: medium
state_hub_task_id: "c97acc58-14d7-47b9-9ab3-936ab1eb92df"
started: "2026-05-27 ralph iter 5"
completed: "2026-05-27"
Done.
- Created
docs/release-process.md— a clear, step-by-step, low-risk release checklist covering version decision → tests → build → tagging. - Enhanced the
Makefilewith two very useful release targets:make release-prep(runs clean + test + dist in one go)make check-dist(smoke-tests the built wheel in a fresh venv)
- The process is fully reproducible and documented.
Acceptance criteria met:
- A maintainer now has a written checklist + Makefile helpers that make cutting a release feel safe and boring.
- The process produces ready-to-upload artifacts.
T06 — Update documentation for both installation methods
id: CYA-WP-0004-T06
status: done
priority: high
state_hub_task_id: "5a4dcdf8-7b0f-45cb-8eb1-46b0d60f8420"
started: "2026-05-27 ralph iter 6 (final docs)"
completed: "2026-05-27"
Done.
- Significantly polished the Installation section in README.md to clearly distinguish:
- Development / bleeding-edge installs (via
make dev-installor directgit+) - Future path for released versions
- Development / bleeding-edge installs (via
- Added references to
docs/release-process.md - Updated AGENTS.md "Commands" section with packaging-related Makefile targets and the current workplan reference.
Acceptance criteria met:
- Both installation methods are now clearly documented and easy to discover in the README.
T07 — Register packaging as a first-class concern
id: CYA-WP-0004-T07
status: done
priority: medium
state_hub_task_id: "f4ea08ab-219e-4e7f-86b9-a05e27b8a72c"
started: "2026-05-27 ralph iter 7 (final)"
completed: "2026-05-27"
Done.
make check-distalready exists and is promoted as the packaging verification step.- Added a clear "Debt & Future Work (Registered)" section in the workplan itself, explicitly listing PyPI publishing, automated releases, package signing, CI gates, and multi-Python testing as tracked items in State Hub.
- Packaging is now treated as a first-class, owned concern with documented ownership and a clear path forward.
Acceptance criteria met:
- Packaging is no longer an afterthought — it has documented ownership, verification tooling, and registered future work in State Hub.
Dependencies & Cross-Repo Coordination
- No hard external dependencies on other tracked repositories for the core work.
- Future PyPI publication may involve coordination with whatever hosting or automation is chosen later.
- State Hub will be used to track the workplan and any packaging-related decisions or debt.
Debt & Future Work (Registered)
This workplan explicitly registers the following as first-class technical debt / extension points:
- PyPI publishing workflow
- Automated releases via CI on tags
- Package signing
- Adding
make check-dist(or equivalent) as a required CI gate - Multi-Python version testing for distribution packages
These are now tracked in State Hub via this workplan.
Completion
Status: done — all tasks completed via ralph loop.
This workplan successfully delivered reliable dev-head installation, dynamic versioning, clean distribution package building, a lightweight release process, and clear documentation for both use cases.
Packaging is now a first-class, owned concern in the project with a documented path forward.
Status note: CYA-WP-0004 is complete. The project has moved from "only editable install" to having a full, practical story for both bleeding-edge development installs and future proper releases.