Files
metin-release-cli/CHANGELOG.md
Jan Nedbal 6e71ddb635 docs: add changelog with phase 1 notes
Seed CHANGELOG.md in Keep a Changelog format, document every Phase 1
subcommand plus the --json flag placement fix as the initial 0.1.0
entry. Future minors and patches add sections above this one.
2026-04-14 19:21:55 +02:00

2.6 KiB

Changelog

All notable changes to metin-release-cli are documented here.

Format follows Keep a Changelog. Versions follow semantic versioning: major for incompatible CLI or JSON contract changes, minor for new subcommands or additive flags, patch for fixes that preserve the contract.

[0.1.0] - 2026-04-14

First Phase 1 drop. Implements the minimum asset release path the metin-release-cli-plan.md calls for — everything the launcher contract needs to publish a signed manifest and content-addressed blob tree.

Added

  • metin-release command, python -m metin_release module entry, and metin-release --version resolving via importlib.metadata
  • Top-level and per-subcommand --json, -v, -q flags (both placements work)
  • Structured result envelope and exit-code contract (0/1/2/3/4) from the plan
  • release inspect — scan a client source root and report counts + flags
  • release build-manifest — wrap make-manifest.py and report manifest stats
  • release sign — wrap sign-manifest.py and verify 64-byte output
  • release diff-remote — HEAD blob URLs and report the missing set
  • release upload-blobs — rsync push blobs + archive to a target, with --dry-run and --yes, excluding manifest.json* so promote stays atomic
  • release promote — upload only manifest.json and manifest.json.sig
  • release verify-public — fetch + Ed25519-verify the published manifest, optional --sample-blobs N sha256 re-check
  • release publish — composite of build-manifest → sign → upload-blobs → promote → verify-public with per-stage timings and short-circuit on failure
  • Error hierarchy in errors.py mapping each exception class to the right exit code and a stable error_code string for machine parsing
  • pytest suite with 18 tests covering dispatch, inspect, build-manifest, sign, diff-remote (via a local HTTPServer fixture), and the full publish composite against a local rsync target
  • docs/cli.md man-page-style reference

Notes

  • Runtime deps pinned to cryptography and requests only. Dev deps are pytest + pytest-mock.
  • make-manifest.py and sign-manifest.py are discovered by convention at scripts/make-manifest.py / scripts/sign-manifest.py relative to the CLI repo, or overridden via METIN_RELEASE_MAKE_MANIFEST and METIN_RELEASE_SIGN_MANIFEST env vars.
  • Phase 2 (erp … subcommands), Phase 3 (MCP wrapper), Phase 4 (m2pack … subcommands) and Phase 5 (launcher publish) are explicitly out of scope for this release and will land in future minors.