Skip to content

docs: versioning & contract policy + manual release process (SEC-23, SEC-24)#8

Merged
21tmccauley merged 1 commit into
mainfrom
feat/sec-23-24-versioning-releases
Jul 9, 2026
Merged

docs: versioning & contract policy + manual release process (SEC-23, SEC-24)#8
21tmccauley merged 1 commit into
mainfrom
feat/sec-23-24-versioning-releases

Conversation

@21tmccauley

Copy link
Copy Markdown
Collaborator

Establishes how the project versions itself and how releases are cut, and bumps to the first public release version (0.2.0). Closes SEC-23; advances SEC-24 (manual-release scope).

SEC-23 — Versioning & contract policy (docs/versioning.md)

  • The contract = the public API surface: the fetcher / category / manifest / envelope schemas + the paramify CLI. Framework internals, the TUI, and fetcher implementations are explicitly not contract.
  • Three independent version axes: tool version (git tag / pyproject), envelope schema_version (additive-only, currently 1.0), per-fetcher version.
  • SemVer bump policy table (major = contract break, minor = additive, patch = fixes).
  • Pre-1.0 rule: while 0.x, a break bumps the minor. 1.0 = contract frozen and supported (deliberate future decision, not auto-triggered).

SEC-24 — Release management (manual variant)

  • Decision: manual / tag-driven releases for now, not release-please — pre-1.0 at low cadence, the bot + always-open release PR + repo setting + squash-merge convention aren't worth it yet. Documented as the future upgrade path.
  • CHANGELOG.md (Keep a Changelog), seeded with a 0.2.0 first-public-release entry.
  • docs/releasing.md — the manual runbook (bump policy → CHANGELOG → pyproject → PR → tag vX.Y.Zgh release create; GitHub auto-attaches the source tarball). Pre-release (-rc/-beta) steps; wheel/PyPI deferred behind the packaging blocker.

Also

  • pyproject 0.1.0 → 0.2.0; both docs added to the README doc index.

Verification

  • pyproject parses at 0.2.0; pytest — 205 passed (the remaining 0.1.0s are per-fetcher version fields, the independent axis).

Note: the actual v0.2.0 tag + GitHub Release are documented but not performed here — cut per the runbook once this lands on main.

🤖 Generated with Claude Code

…SEC-24)

Define how the project versions itself and how releases are cut, and bump to
the first public release version.

SEC-23 (versioning & contract policy) — docs/versioning.md:
- The contract = public API surface (fetcher/category/manifest/envelope schemas
  + the paramify CLI); framework internals, TUI, and fetcher implementations are
  explicitly not contract.
- The 3 independent version axes: tool version (tag/pyproject), envelope
  schema_version (additive-only, currently 1.0), per-fetcher version (0.x).
- SemVer bump policy table (major = contract break, minor = additive, patch =
  fixes).
- Pre-1.0 rule (a break bumps the minor while under 1.0) and 1.0 = contract
  frozen and supported.

SEC-24 (release management, manual variant):
- CHANGELOG.md in Keep a Changelog format, seeded with a 0.2.0 first-public-
  release entry.
- docs/releasing.md — the manual, tag-driven runbook (bump policy -> CHANGELOG
  -> pyproject -> PR -> tag vX.Y.Z -> gh release create; GitHub auto-attaches the
  source tarball). Pre-release (-rc/-beta) steps; wheel/PyPI deferred behind the
  packaging blocker; release-please documented as a future upgrade path.

Bump pyproject 0.1.0 -> 0.2.0 and add both docs to the README doc index.

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
@21tmccauley
21tmccauley merged commit 28ba309 into main Jul 9, 2026
12 checks passed
@21tmccauley
21tmccauley deleted the feat/sec-23-24-versioning-releases branch July 9, 2026 20:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant