@mutmutco/kilo-plugin 3.128.0 → 3.130.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mutmutco/kilo-plugin",
3
- "version": "3.128.0",
3
+ "version": "3.130.0",
4
4
  "description": "MMI workflow skills and org gates delivery.",
5
5
  "author": {
6
6
  "name": "MMI Future",
@@ -100,8 +100,8 @@ exists — a tag minted before the conflict resolution points at the wrong SHA.
100
100
  ## Step 3 — tag the rc
101
101
 
102
102
  The shared helper derives the next rc tag from existing tags (re-run-safe — `-rc.N` increments). `rc` mode
103
- requires `MMI_BUMP_INTENT` (PATCH is `/hotfix`-only, so a planned release is `minor` or `major`; the train
104
- refuses without it):
103
+ reads `MMI_BUMP_INTENT`; unset it resolves to `patch` (#4929) declare `minor`/`major` explicitly for a
104
+ planned feature cycle:
105
105
  ```bash
106
106
  TAG=$(MMI_BUMP_INTENT=minor node scripts/next-version.mjs rc) # -> vX.Y.0-rc.N
107
107
  git tag "$TAG"
@@ -191,11 +191,10 @@ Version `vX.Y.0-rc.N` · merged commits · rc deploy run + env URL.
191
191
  - **MAJOR / exact-target cycle:** for a release the tag math can't derive (a MAJOR like `2.0.0`, or skipping
192
192
  a version already on npm), export `MMI_RELEASE_VERSION=X.Y.Z` before `/rcand` — `next-version.mjs rc` then
193
193
  opens that exact cycle (validated to move strictly forward). Keep it exported through `/release`.
194
- - **`MMI_BUMP_INTENT=major|minor|patch` is required for `next-version.mjs rc`** (Step 3) — it selects the
195
- increment for an ordinary release and is never inferred; absence is a hard refusal, not a default.
196
- **Export it for the whole run:** `mmi-cli devops rcand --apply` resolves the intent itself and refuses
197
- mid-train with the same message, so passing it only as a one-off prefix on the `next-version.mjs` command
198
- leaves the apply to fail after the preflight has already passed. This is
194
+ - **`MMI_BUMP_INTENT=major|minor|patch` selects the increment for `next-version.mjs rc`** (Step 3); absent,
195
+ it defaults to `patch` (#4929). **Export it for the whole run:** `mmi-cli devops rcand --apply` resolves
196
+ the intent itself with the same default, so a one-off prefix on the `next-version.mjs` command leaves the
197
+ apply deriving a different increment than the tag you minted. This is
199
198
  a different knob from `MMI_RELEASE_VERSION` above: `MMI_BUMP_INTENT` picks the increment,
200
199
  `MMI_RELEASE_VERSION` overrides the computed version entirely and is for the exceptional case only.
201
200
 
@@ -5,6 +5,11 @@ description: Ship rc or direct-track development to main and production.
5
5
 
6
6
  **Host-native invocation:** Claude `/mmi:release` · Codex `$mmi:release` · jervcode/Kimi `/skill:release` · Kilo `skill` tool. A backticked `/name` in this doc names the matching workflow (this skill or a sibling), not a literal command.
7
7
 
8
+ **Argument (#4929):** `/release minor`, `/release major`, or `/release patch` — a bare bump word, never a
9
+ `--flag` or env var. Map it to `MMI_BUMP_INTENT` exported for the whole run (the train and
10
+ `next-version.mjs` both read it). No argument → `patch`: a `/release patch` from development is a
11
+ legitimate ordinary release; `/hotfix` remains the cherry-pick promotion lane.
12
+
8
13
  # /release — ship to main + prod
9
14
 
10
15
  Full-track repos ship **exactly what is on `rc`** (never pulls `development`): merge `rc → main`, tag
@@ -56,9 +61,13 @@ mean "unverified", never an authority verdict:**
56
61
  denial, and retrying will never change it: fix the `{owner}/{repo}` argument, then re-probe. Before the
57
62
  fix this string came back `role: master, train: true, verified: true` for anything owner/name-shaped.
58
63
 
59
- - An `unknown command 'org'` error is a STALE CLI — the `org` namespace ships in newer trains, so an old
60
- installed CLI can't even parse the probe. Jump to Step 0a, heal the CLI, then re-run this probe; never
61
- conclude the command form is wrong from a pre-heal failure (#3150).
64
+ - An `unknown command 'oracle'` error is a STALE CLI — the house-prefixed namespaces ship in newer
65
+ trains, so an old installed CLI can't even parse the probe. Jump to Step 0a, heal the CLI, then re-run
66
+ this probe; never conclude the command form is wrong from a pre-heal failure (#3150). The mirror-image
67
+ failure is a Wave-3 flat alias on a CURRENT CLI: the un-housed `org …`, `secrets …`, and
68
+ `release …` forms were removed in #4316 and fail closed with a house-prefix error — rewrite to the
69
+ house form (`mmi-cli oracle org …`, `mmi-cli vault secrets …`, `mmi-cli devops release …`); that is
70
+ never a stale CLI and never an authority verdict.
62
71
  - A **TIMEOUT or network error** (`operation aborted due to timeout`, DNS/socket failures) is **not** a
63
72
  `train: false` denial (#3321). Read the probe's own `verified` field: `verified: false` means the verdict
64
73
  could not be established, so the `train: false` beside it carries NO authority meaning. The client
@@ -70,8 +79,10 @@ mean "unverified", never an authority verdict:**
70
79
 
71
80
  Then
72
81
  preconditions: clean tree; full-track repos run from `rc` (or from `development` with `--dev`), while
73
- direct-track repos run from `development`. Ordinary `/release` also needs `MMI_BUMP_INTENT=minor|major`
74
- exported in the apply environment (patch is `/hotfix`); the train does not infer an open cycle.
82
+ direct-track repos run from `development`. Ordinary `/release` takes its bump intent from the bare
83
+ argument (`/release minor|major|patch` `MMI_BUMP_INTENT`, exported for the whole run); unstated, the
84
+ train defaults to `patch` (#4929). An invalid intent fails `--apply` closed at intent resolution
85
+ (`MMI_BUMP_INTENT must be one of major|minor|patch`), before any merge, tag, or fold.
75
86
 
76
87
  **Run from the checkout that already has that branch — never a fresh isolated worktree (#2770).** This is
77
88
  a shared-branch train operation (merge/tag/push against origin's protected `main`/`rc`), not an isolated
@@ -288,8 +299,10 @@ Nothing to do by hand; the `--apply` result reports the fold outcome (`versionFo
288
299
  ## Step 2 — tag the release
289
300
 
290
301
  Full-track repos drop the `-rc.N` suffix from the open cycle. Direct-track repos use the next cycle directly
291
- because they have no rc tag — and `cycle` mode requires `MMI_BUMP_INTENT` (PATCH is `/hotfix`-only, so a
292
- planned release is `minor` or `major`; the train refuses without it):
302
+ because they have no rc tag — `cycle` mode reads `MMI_BUMP_INTENT` (the `/release` argument; unset →
303
+ `patch`, #4929). The Step 0 export is what covers the apply run — the inline prefix below only resolves
304
+ the tag for display; `mmi-cli devops release --apply` re-derives intent itself and fail-closes before any
305
+ merge, tag, or fold when the value is invalid:
293
306
  ```bash
294
307
  TAG=$(node scripts/next-version.mjs release) # full-track repos -> vX.Y.0
295
308
  TAG=$(MMI_BUMP_INTENT=minor node scripts/next-version.mjs cycle) # direct-track repos -> vX.Y.0
@@ -546,12 +559,15 @@ deploy run + URL + **green/red** · branch-alignment note · npm publish run + C
546
559
 
547
560
  ## Notes
548
561
 
549
- - PATCH-level releases are `/hotfix` only (a hotfix always skips rc — it cherry-picks `development → main`
550
- directly); planned releases are MINOR or MAJOR. Never force-push `main`.
551
- - **`MMI_BUMP_INTENT=major|minor` is required in the apply environment for ordinary `/release`** (patch is
552
- `/hotfix`). Absence is a hard refusal — the train never infers an open cycle. Export it for the whole
553
- run, not a one-off prefix on `next-version.mjs cycle`: `mmi-cli devops release --apply` (and `rcand
554
- --apply`) resolve intent themselves and refuse mid-train if the env is missing. `MMI_RELEASE_VERSION`
562
+ - `/hotfix` stays the cherry-pick promotion lane (a hotfix always skips rc — it cherry-picks
563
+ `development → main` directly), but a `/release patch` from development is a legitimate ordinary
564
+ release (#4929). Never force-push `main`.
565
+ - **`MMI_BUMP_INTENT=major|minor|patch` comes from the bare `/release` argument; unstated it defaults to
566
+ `patch`** (#4929). Export it for the whole run, not a one-off prefix on `next-version.mjs cycle`:
567
+ `mmi-cli devops release --apply` (and `rcand --apply`) resolve intent themselves **before any merge,
568
+ tag, or fold** — direct-track included — defaulting to `patch` when the env is absent and failing closed
569
+ there with `MMI_BUMP_INTENT must be one of major|minor|patch` on an invalid value, so the tree stays
570
+ clean on the start branch. `MMI_RELEASE_VERSION`
555
571
  below is a different knob: it overrides the computed version; it does not replace the intent export
556
572
  unless you set that exact-target env instead.
557
573
  - **`--dev` (full-track only):** releases `development → main` skipping rc, with the same fold/tag/Release/
@@ -561,8 +577,8 @@ deploy run + URL + **green/red** · branch-alignment note · npm publish run + C
561
577
  - **MAJOR / exact-target release:** to ship a version the tag math can't derive (a MAJOR like `2.0.0`, or
562
578
  skipping a version already on npm), product repos export `MMI_RELEASE_VERSION=X.Y.Z` for **both** `/rcand`
563
579
  and `/release`; MMI-Hub exports it for `/release` only. Steps 1b/2 then fold and tag exactly that
564
- version. Unset, the train uses the declared `MMI_BUMP_INTENT` increment it does not infer an open
565
- cycle, and apply fail-closes if that env is also missing.
580
+ version. Unset, the train uses the declared `MMI_BUMP_INTENT` increment, defaulting to `patch` when
581
+ neither the argument nor the env declares one (#4929).
566
582
 
567
583
  ## Retro — one check before you finish
568
584
  Before your final report, answer one question honestly: did **this skill's own instructions** misfire