Tasks: Publish the-loop to PyPI
Phase 3 of 3 (requirements → design → tasks). A DAG derived from the approved design. This is CI/infra work with no new runtime code, so "tests" are build/packaging verification commands (recorded as evidence in
execution-log.md) rather than new pytest cases; the existingclisuite must stay green (tdd.mode: standard).
Task list
[x] 1. Rename the distribution to
the-loopy-onecli/pyproject.toml:[project] name→the-loopy-one; add troveclassifiersand anIssuesURL; keeppackages = ["the_loop"]and thethe-loopconsole script.- Depends on: none
- Requirements: R1
- Test:
uv build --package the-loopy-onethen inspect the wheel — METADATAName: the-loopy-one, containsthe_loop/, entry pointthe-loop = the_loop.__main__:main.
[x] 2. Re-lock the workspace
uv lockso the member renamesthe-loop→the-loopy-one; commituv.lock.- Depends on: 1
- Requirements: R4
- Test:
uv syncresolves clean;grep 'the-loopy-one' uv.lock.
[x] 3. Configure commitizen for semantic version bumps
.cz.toml: addversion_files = ["cli/pyproject.toml:^version = "](so a bump rewrites the package version) andupdate_changelog_on_bump = false.- Depends on: 1
- Requirements: R3
- Test:
uv run cz bump --yescomputes0.1.0 → 0.2.0and rewrites both.cz.tomlandcli/pyproject.toml(verified locally, then reverted).
[x] 4. Add the semantic-release workflow
- New
.github/workflows/release.yml: onpush: main,releasejob runscz bump(classify exit 0 / 21 / 3), push bump+tag to main,gh release create,uv build, upload artifact;publish-pypijob (environment: pypi,id-token: write,pypa/gh-action-pypi-publish,if: released).concurrency: release; skip onbump:commits. - Depends on: 1, 3
- Requirements: R2, R3
- Test: YAML parses; jobs/env/permissions asserted; no token reference.
- New
[x] 5. Document install + the decision
cli/README.md:pip install the-loopy-one+ semantic-release note. Newdocs/decisions/decision-019.md(scope + semantic release + future-proofing) and index row. Updatedocs/architecture/architecture.mdanddocs/roadmap.md.- Depends on: 1, 4
- Requirements: R5
- Test:
make lint(markdownlint) passes; decision index links resolve.
[x] 6. Full quality gate
- Run the repo's CI-parity gate.
- Depends on: 2, 3, 4, 5
- Requirements: R1–R5
- Test:
make check(lint, format-check, typecheck, validate, test) green.
Dependency graph (DAG)
mermaid
graph LR
1 --> 2
1 --> 3
1 --> 4
3 --> 4
1 --> 5
4 --> 5
2 --> 6
4 --> 6
5 --> 6Checkpoints
- After task 1: build the wheel and assert distribution/import/script names (R1 evidence).
- After tasks 3–4:
cz bumpcomputes0.2.0+ rewrites both version files;release.ymlstructure/env/permissions asserted (R2/R3 evidence). - After task 6:
make checkgreen — the pre-merge gate. The first real publish is evidenced when this PR merges tomainand the release job publishes0.2.0(recorded in the execution log).