@mutmutco/kilo-plugin 3.83.0 → 3.84.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 +1 -1
- package/skills/hotfix/SKILL.md +5 -1
- package/skills/rcand/SKILL.md +6 -2
- package/skills/release/SKILL.md +33 -3
package/package.json
CHANGED
package/skills/hotfix/SKILL.md
CHANGED
|
@@ -38,7 +38,11 @@ mmi-cli doctor --no-repo-writes
|
|
|
38
38
|
```
|
|
39
39
|
|
|
40
40
|
Stop on a red authority or CLI-version result. The worktree must be clean; move scratch into `tmp/` or
|
|
41
|
-
gitignore it rather than widening the hotfix diff.
|
|
41
|
+
gitignore it rather than widening the hotfix diff. A TRACKED path named in a `working tree must be clean
|
|
42
|
+
before …` refusal is not scratch: read both `git status --porcelain` columns, treat every state except
|
|
43
|
+
exactly ` M` as real work to commit or stash, and for ` M` discard only when
|
|
44
|
+
`git diff HEAD --numstat -- <paths>` is empty, and only with `git checkout -- <paths>`. Plain
|
|
45
|
+
`git diff --numstat` prints nothing for a merely staged change, so it cannot make that call (#4004).
|
|
42
46
|
|
|
43
47
|
## 1. Start from the merged development fix
|
|
44
48
|
|
package/skills/rcand/SKILL.md
CHANGED
|
@@ -43,8 +43,12 @@ primary checkout.
|
|
|
43
43
|
## Step 1 — development ahead of rc?
|
|
44
44
|
|
|
45
45
|
Preconditions: on `development`, clean tree. The clean-tree check rejects UNTRACKED scratch too, not just
|
|
46
|
-
modified tracked files — if `--apply` stops with `working tree must be clean before …`, run `git status
|
|
47
|
-
|
|
46
|
+
modified tracked files — if `--apply` stops with `working tree must be clean before …`, run `git status
|
|
47
|
+
--porcelain` on the paths it named and read both columns. Gitignore the `??` scratch (or move it to a
|
|
48
|
+
gitignored path like `tmp/`). Treat every tracked state except exactly ` M` as real work to commit or stash;
|
|
49
|
+
for ` M`, discard only when `git diff HEAD --numstat -- <paths>` is empty, and only with
|
|
50
|
+
`git checkout -- <paths>`. Plain `git diff --numstat` prints nothing for a merely staged change, so it
|
|
51
|
+
cannot tell real work from line-ending churn (#1472, #4004).
|
|
48
52
|
```bash
|
|
49
53
|
git fetch origin
|
|
50
54
|
git rev-list --count origin/rc..origin/development
|
package/skills/release/SKILL.md
CHANGED
|
@@ -72,9 +72,22 @@ breaks here: the new worktree's branch is never literally named `development`/`r
|
|
|
72
72
|
development` inside it fails outright when `development` is already checked out in the primary checkout (git
|
|
73
73
|
worktrees cannot have the same branch checked out twice). If you are in such a worktree, exit it first and
|
|
74
74
|
run the release from the primary checkout.
|
|
75
|
-
The clean-tree check rejects UNTRACKED scratch too, not just modified tracked files
|
|
76
|
-
with `working tree must be clean before …`, run `git status`
|
|
77
|
-
|
|
75
|
+
The clean-tree check rejects UNTRACKED scratch too, not just modified tracked files. When `--apply` or
|
|
76
|
+
`--resume` stops with `working tree must be clean before …`, run `git status --porcelain` on the paths it
|
|
77
|
+
named and read BOTH status columns before touching anything (#1472, #4004):
|
|
78
|
+
|
|
79
|
+
- `??` — untracked scratch. Gitignore it, or move it to a gitignored path like `tmp/`, then retry.
|
|
80
|
+
- exactly ` M` (blank staged column) — the only state that can be churn rather than work. Test it with
|
|
81
|
+
`git diff HEAD --numstat -- <paths>`: non-empty is a real edit to commit or stash; empty means the
|
|
82
|
+
worktree normalizes straight back to HEAD (an LF↔CRLF rewrite, say), and `git checkout -- <paths>`
|
|
83
|
+
then clears the refusal without discarding anything.
|
|
84
|
+
- anything else — `M `, `MM`, `A`, `D`, `R`, `T`, or any `U` conflict — is real work or an exceptional
|
|
85
|
+
index state. Commit, stash or resolve it; do not try to classify it.
|
|
86
|
+
|
|
87
|
+
Do not substitute plain `git diff --numstat` for the `HEAD` form. It compares the worktree against the
|
|
88
|
+
INDEX, so a change that is merely staged prints nothing at all, and reading that emptiness as
|
|
89
|
+
"line-ending churn" throws the change away. The remedy is the index form of `git checkout` for the same
|
|
90
|
+
reason: `git checkout HEAD -- <paths>` would overwrite a staged edit that was misread as churn.
|
|
78
91
|
|
|
79
92
|
Full-track repos:
|
|
80
93
|
```bash
|
|
@@ -471,6 +484,19 @@ mmi-cli org project sync-info --apply # omit --apply for the read-only plan
|
|
|
471
484
|
channel — #3630 took SessionStart off the hook surface) runs the
|
|
472
485
|
same fast-forward first thing, so a stale local `development`/`main`/`rc` self-heals to origin before you
|
|
473
486
|
work — no manual `git pull`. Nothing here ever blocks or fails the release.
|
|
487
|
+
- **Read the `checkout:` clause — it does not always say "returned" (#4006).** The report always prints
|
|
488
|
+
one, and restoration is deliberately skipped rather than forced when the repo is not in a fit state.
|
|
489
|
+
A release leaves the repo on `main` until the train moves it back, so a non-`returned` outcome means
|
|
490
|
+
you are still there and must return by hand once the cause is cleared:
|
|
491
|
+
- `checkout restoration skipped: working tree changed after release` — the tree went dirty DURING the
|
|
492
|
+
train, so the train declined to move you. Diagnose those paths with the Step 0 clean-tree rules,
|
|
493
|
+
then `git checkout <start branch>` yourself. The release itself already shipped; this is a
|
|
494
|
+
deliberate, harmless decline, not a failed release.
|
|
495
|
+
- `checkout restoration failed while returning to …` / `origin/<branch> fast-forward failed` — the
|
|
496
|
+
checkout or the pull errored. Read the appended git message; the release is unaffected.
|
|
497
|
+
|
|
498
|
+
`--resume` prints no `checkout:` clause at all, so after a resumed release check `git branch
|
|
499
|
+
--show-current` rather than assuming you were moved back.
|
|
474
500
|
|
|
475
501
|
## Step 6 — collect deploy verdict + report
|
|
476
502
|
|
|
@@ -478,6 +504,10 @@ Collect the backgrounded prod-deploy watch from Step 4 (it has typically finishe
|
|
|
478
504
|
healthy (the central deploy workflow smoke step / a health check); **red** → report the failure prominently and flag
|
|
479
505
|
that the release shipped on a failed deploy (re-run just the deploy — `main` is already correct).
|
|
480
506
|
|
|
507
|
+
**This distribution verifier is Hub-only.** It assumes the Hub release fold has already committed its
|
|
508
|
+
generated artifacts. Non-Hub `registry-publish` repositories must not run `release-distribution.mjs
|
|
509
|
+
verify`: use their own release-workflow evidence and the publish-visibility contract below.
|
|
510
|
+
|
|
481
511
|
Hub releases always carry a distribution bump (the Step 1b fold), so the **publish workflow**
|
|
482
512
|
(`publish.yml`) ships every registry-declared public npm artifact on the GitHub Release from Step 4 —
|
|
483
513
|
don't publish by hand.
|