Goal
Publish the first real v0.1 release and prove that users can install, verify, start, and remove korvid through the documented paths. Validate the real external supply-chain boundary rather than treating the existing workflow as proven.
Assessment
The package is already versioned 0.1.0, the full gate is green, Windows compatibility issue #173 was completed by #184, and the release workflow already builds once, verifies metadata, creates SBOMs and checksums, attests artifacts, stages a draft GitHub release, publishes with PyPI OIDC, and promotes the same bytes.
The remaining release blockers are concrete:
- no PyPI project or GitHub release exists;
- no protected
release environment exists;
- no immutable
v* tag ruleset exists;
- the workflow has no non-publishing dry-run entry point;
- online wheel smoke coverage is Ubuntu/base-only rather than the supported OS, Python, and optional-extra matrix;
- installation, state locations, recovery, and post-publication verification are not yet an operator runbook.
A demo mode will not be invented solely for packaging. Runtime startup is already covered by integration/UI tests; release-artifact smoke will verify import, --help, --version, optional-extra behavior, and clean uninstall. Because v0.1.0 has no prior PyPI version, a real cross-version upgrade cannot be demonstrated until the next release; v0.1.0 will instead verify package-manager reinstall/extra expansion and document that limitation honestly. Package uninstall must not silently delete user-owned config, keyring entries, audit logs, or exports; the runbook will document all locations and explicit cleanup.
Approved approach
- Land a focused release-hardening PR:
- add a main-only
workflow_dispatch dry run that executes every reversible build, audit, smoke, offline-bundle, collection, and attestation job but cannot stage or publish a release;
- expand clean-wheel smoke tests across Linux, macOS, Windows, Python 3.11-3.13, and base/agent/mcp/all variants without weakening the existing offline bundle matrix;
- expose
korvid --version;
- add a concise release runbook covering external prerequisites, dry run, tag creation, approval, partial-failure recovery, verification, uninstall, retained user data, and rollback limitations.
- Configure external trust before tagging:
- immutable protected
v* tags restricted to the release maintainer;
- protected
release environment limited to protected tags and requiring maintainer approval;
- exact PyPI Trusted Publisher binding to
hellices/korvid, .github/workflows/release.yml, environment release.
- Run and inspect the non-publishing dry run.
- Create and push annotated tag
v0.1.0 at the verified main commit.
- Approve publication only after the pre-publication jobs and staged draft assets are verified.
- Verify PyPI, GitHub release assets, checksums, attestations, install variants, optional-extra behavior, package-manager reinstall/extra expansion, uninstall, and documented retained-state behavior.
Acceptance criteria
korvid==0.1.0 is installable from PyPI.
- The matching non-draft GitHub release contains the exact promoted wheel, sdist, checksums, SBOM, provenance attestations, metadata, and documented offline bundles.
gh attestation verify and checksum verification succeed on downloaded artifacts.
- The release dry run succeeds without creating a tag, GitHub release, or PyPI project/version.
- Clean built-wheel smoke tests pass on Linux, macOS, and Windows with Python 3.11, 3.12, and 3.13 for base,
agent, mcp, and all.
- Optional extras fail or degrade exactly as documented when absent and are importable when installed.
korvid --help and korvid --version work from the built and published wheel.
- Uninstall removes the package and console entry point; retained user-owned config, credentials, audit logs, saved logs, and payload exports are documented with explicit cleanup locations.
- README installation and release sections describe current reality after publication and state the tested platform matrix.
- The release runbook records external administrator prerequisites, irreversible steps, and recovery paths for partial publication.
- The first-release limitation on true cross-version upgrade testing is explicit; the real upgrade path becomes a required check for the next version.
Out of scope
- A native single-file executable.
- Homebrew, Krew, or additional package managers before PyPI/GitHub publication is proven.
- A new demo/canned-data runtime mode solely for release smoke testing.
- Automatic deletion of user-owned configuration, credentials, audit logs, or exports during package uninstall.
- Claiming a cross-version PyPI upgrade before a previous PyPI version exists.
Goal
Publish the first real v0.1 release and prove that users can install, verify, start, and remove korvid through the documented paths. Validate the real external supply-chain boundary rather than treating the existing workflow as proven.
Assessment
The package is already versioned
0.1.0, the full gate is green, Windows compatibility issue #173 was completed by #184, and the release workflow already builds once, verifies metadata, creates SBOMs and checksums, attests artifacts, stages a draft GitHub release, publishes with PyPI OIDC, and promotes the same bytes.The remaining release blockers are concrete:
releaseenvironment exists;v*tag ruleset exists;A demo mode will not be invented solely for packaging. Runtime startup is already covered by integration/UI tests; release-artifact smoke will verify import,
--help,--version, optional-extra behavior, and clean uninstall. Because v0.1.0 has no prior PyPI version, a real cross-version upgrade cannot be demonstrated until the next release; v0.1.0 will instead verify package-manager reinstall/extra expansion and document that limitation honestly. Package uninstall must not silently delete user-owned config, keyring entries, audit logs, or exports; the runbook will document all locations and explicit cleanup.Approved approach
workflow_dispatchdry run that executes every reversible build, audit, smoke, offline-bundle, collection, and attestation job but cannot stage or publish a release;korvid --version;v*tags restricted to the release maintainer;releaseenvironment limited to protected tags and requiring maintainer approval;hellices/korvid,.github/workflows/release.yml, environmentrelease.v0.1.0at the verifiedmaincommit.Acceptance criteria
korvid==0.1.0is installable from PyPI.gh attestation verifyand checksum verification succeed on downloaded artifacts.agent,mcp, andall.korvid --helpandkorvid --versionwork from the built and published wheel.Out of scope