Skip to content

feat(module/deploy): CLI deploy verb — record version from code + deploy#39

Merged
I-am-nothing merged 1 commit into
mainfrom
feat/module-deploy
Jul 3, 2026
Merged

feat(module/deploy): CLI deploy verb — record version from code + deploy#39
I-am-nothing merged 1 commit into
mainfrom
feat/module-deploy

Conversation

@I-am-nothing

Copy link
Copy Markdown
Contributor

What

Adds mirrorstack module deploy — the whole CLI deploy verb. The module's
code is the source of truth: deploy reads the newest Config.Versions
key out of main.go, records that version (immutable snapshot + live
manifest) when it isn't recorded yet, then points it at a Lambda invoke
target. publish is merged into deploy — one developer verb.

Contents

  • api: record_module_version, list_module_versions,
    set_module_deploy, get_tunnel_manifest, each surfacing the platform
    error-envelope (version_exists, invoke_target_invalid,
    changelog_too_large, tunnel_offline, …).
  • module_meta: parse the Versions map keys from main.go, SemVer-rank
    them, and promote a -dev key in place at deploy time.
  • README / CHANGELOG as locale maps: each captured as
    { "default": …, "<tag>": … } — README read off disk at the module root,
    CHANGELOG as the matching ## <version> section.
  • scaffold/template: reword publish→deploy; -dev versions refused
    under --yes (CI) by convention.

Why this is one clean PR

Collapses the old feat/module-deploy-cmd stack (which had pre-monorepo-rebase
dev-runner WIP commits and conflicted with main) into a single coherent
commit off the current main. The dev-runner / app-command / credentials
churn on the old stack was superseded by main's monorepo rebase and is dropped;
only the deploy verb remains. No merge commits, no leftover markers, cargo build + cargo test (144) + cargo fmt --check + cargo clippy all green.

Pairs with the api-platform module_deploys writer already merged (#284).

Add `mirrorstack module deploy`: the module's code is the source of truth.
Deploy reads the newest `Config.Versions` key out of main.go, records that
version (immutable snapshot + manifest) when it isn't recorded yet, then
points it at a Lambda invoke target — one developer verb, publish merged in.

- api: record_module_version / list_module_versions / set_module_deploy /
  get_tunnel_manifest, with platform error-envelope surfacing.
- module_meta: parse + SemVer-rank the Versions map keys, promote a
  `-dev` key in-place at deploy time.
- README + CHANGELOG captured as locale maps ({default, <tag>}), each read
  off disk at the module root and version-section respectively.
- scaffold/template: reword publish→deploy; `-dev` refused under --yes.

Pairs with the api-platform module_deploys writer (already merged, #284).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@I-am-nothing I-am-nothing merged commit 9662f37 into main Jul 3, 2026
5 checks passed
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