Skip to content

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 existing cli suite must stay green (tdd.mode: standard).

Task list

  • [x] 1. Rename the distribution to the-loopy-one

    • cli/pyproject.toml: [project] namethe-loopy-one; add trove classifiers and an Issues URL; keep packages = ["the_loop"] and the the-loop console script.
    • Depends on: none
    • Requirements: R1
    • Test: uv build --package the-loopy-one then inspect the wheel — METADATA Name: the-loopy-one, contains the_loop/, entry point the-loop = the_loop.__main__:main.
  • [x] 2. Re-lock the workspace

    • uv lock so the member renames the-loopthe-loopy-one; commit uv.lock.
    • Depends on: 1
    • Requirements: R4
    • Test: uv sync resolves clean; grep 'the-loopy-one' uv.lock.
  • [x] 3. Configure commitizen for semantic version bumps

    • .cz.toml: add version_files = ["cli/pyproject.toml:^version = "] (so a bump rewrites the package version) and update_changelog_on_bump = false.
    • Depends on: 1
    • Requirements: R3
    • Test: uv run cz bump --yes computes 0.1.0 → 0.2.0 and rewrites both .cz.toml and cli/pyproject.toml (verified locally, then reverted).
  • [x] 4. Add the semantic-release workflow

    • New .github/workflows/release.yml: on push: main, release job runs cz bump (classify exit 0 / 21 / 3), push bump+tag to main, gh release create, uv build, upload artifact; publish-pypi job (environment: pypi, id-token: write, pypa/gh-action-pypi-publish, if: released). concurrency: release; skip on bump: commits.
    • Depends on: 1, 3
    • Requirements: R2, R3
    • Test: YAML parses; jobs/env/permissions asserted; no token reference.
  • [x] 5. Document install + the decision

    • cli/README.md: pip install the-loopy-one + semantic-release note. New docs/decisions/decision-019.md (scope + semantic release + future-proofing) and index row. Update docs/architecture/architecture.md and docs/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 --> 6

Checkpoints

  • After task 1: build the wheel and assert distribution/import/script names (R1 evidence).
  • After tasks 3–4: cz bump computes 0.2.0 + rewrites both version files; release.yml structure/env/permissions asserted (R2/R3 evidence).
  • After task 6: make check green — the pre-merge gate. The first real publish is evidenced when this PR merges to main and the release job publishes 0.2.0 (recorded in the execution log).

Released under the MIT License.