@mutmutco/pi-plugin 4.1.5 → 4.1.6
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 +3 -6
- package/skills/release/SKILL.md +21 -32
package/package.json
CHANGED
package/skills/hotfix/SKILL.md
CHANGED
|
@@ -53,12 +53,9 @@ mmi-cli oracle org access role <owner/repo> --json
|
|
|
53
53
|
mmi-cli doctor --no-repo-writes
|
|
54
54
|
```
|
|
55
55
|
|
|
56
|
-
Stop on a red authority or CLI-version result.
|
|
57
|
-
`/release
|
|
58
|
-
|
|
59
|
-
drive-letter alias that hides spaces is not a valid workaround — canonical-root containment still
|
|
60
|
-
sees the physical path, so materialization inputs resolve outside the alias root. See `/release`
|
|
61
|
-
Step 0e.
|
|
56
|
+
Stop on a red authority or CLI-version result. Hub hotfix release runs the same distribution fold as
|
|
57
|
+
`/release`; its hook-contract verifier executes adapter commands as a native argv without a shell
|
|
58
|
+
(#5605), so a checkout path containing spaces is supported.
|
|
62
59
|
|
|
63
60
|
The worktree must be clean; move scratch into `tmp/` or
|
|
64
61
|
gitignore it rather than widening the hotfix diff. A TRACKED path named in a `working tree must be clean
|
package/skills/release/SKILL.md
CHANGED
|
@@ -109,8 +109,6 @@ development` inside it fails outright when `development` is already checked out
|
|
|
109
109
|
worktrees cannot have the same branch checked out twice). If you are in such a worktree, exit it first and
|
|
110
110
|
run the release from the primary checkout.
|
|
111
111
|
|
|
112
|
-
**Hub `/release` also refuses a checkout path that contains spaces — prove that in Step 0e before touching local `main`.** A subst/junction/alias that hides the spaces is not a workaround.
|
|
113
|
-
|
|
114
112
|
The clean-tree check rejects UNTRACKED scratch too, not just modified tracked files. When `--apply` or
|
|
115
113
|
`--resume` stops with `working tree must be clean before …`, run `git status --porcelain` on the paths it
|
|
116
114
|
named and read BOTH status columns before touching anything (#1472, #4004):
|
|
@@ -144,6 +142,23 @@ git rev-list --count origin/main..origin/development
|
|
|
144
142
|
```
|
|
145
143
|
`0` → stop ("nothing to release").
|
|
146
144
|
|
|
145
|
+
**Checkout topology — verify the lane's refs exist locally before apply (#5624).** A fresh single-branch
|
|
146
|
+
`development` clone has no local `main`; the train then fails or rolls back at `git checkout main`. Before
|
|
147
|
+
any merge or `--apply`, confirm every ref the lane will touch is present as a local tracking branch:
|
|
148
|
+
|
|
149
|
+
```bash
|
|
150
|
+
git branch --list development main # direct-track (and full-track --dev)
|
|
151
|
+
git branch --list rc main # full-track rc → main
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
A missing ref is a topology gap, not a train failure — materialize it from origin, never force past it:
|
|
155
|
+
|
|
156
|
+
```bash
|
|
157
|
+
git fetch origin main:main # (or development:development / rc:rc) — creates the local ref
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
Re-run the `--list` until every ref the lane touches is present, then proceed.
|
|
161
|
+
|
|
147
162
|
## Step 0a — stale CLI preflight (#1410)
|
|
148
163
|
|
|
149
164
|
Before local gates or `release --apply`, ensure the repo-local / PATH `mmi-cli` matches the released train
|
|
@@ -300,33 +315,6 @@ Current state is compute-at-read + the estate repo-index (`mmi-cli oracle repo-i
|
|
|
300
315
|
If shipping code made a hand-written surface wrong, fix it on `development` as an ordinary PR
|
|
301
316
|
**outside** the train — never as a release Step.
|
|
302
317
|
|
|
303
|
-
## Step 0e — Hub checkout path must not contain spaces (#5603)
|
|
304
|
-
|
|
305
|
-
**Hub `/release` only. Do this before Step 1 — before any `git checkout main`, merge, or `--apply`.**
|
|
306
|
-
The Hub fold runs `scripts/check-hook-contract.mjs`. That verifier's Cursor probe still executes the
|
|
307
|
-
adapter command through `shell: true`. An unquoted launcher path is then split at the first space
|
|
308
|
-
(`E:\AI Projects\Mutatis Mutandis\MMI-Hub` → `E:\AI`), so the fold never gets a coherent argv. Stop
|
|
309
|
-
when the checkout path contains whitespace; do not discover this after local `main` has already moved.
|
|
310
|
-
|
|
311
|
-
Prove it from the release checkout:
|
|
312
|
-
|
|
313
|
-
```bash
|
|
314
|
-
node -e "const p = process.cwd(); if (/\s/.test(p)) { console.error('Hub /release: checkout path contains spaces:\\n' + p + '\\nStop. Clone or move MMI-Hub to a path with no spaces. subst/junction/alias is not a workaround.'); process.exit(1); }"
|
|
315
|
-
```
|
|
316
|
-
|
|
317
|
-
Non-zero → **stop**. Relocate the clone to a real path without spaces (for example `C:\src\MMI-Hub` or
|
|
318
|
-
`/opt/mmi/MMI-Hub`) and re-run `/release` from that checkout. Do not reset, merge, or fold on the
|
|
319
|
-
spaced tree.
|
|
320
|
-
|
|
321
|
-
**A subst / junction / directory-junction / drive-letter alias that hides spaces is not a valid
|
|
322
|
-
workaround.** Mapping `E:\AI Projects\Mutatis Mutandis\MMI-Hub` onto `M:\` only hides spaces in the
|
|
323
|
-
*logical* cwd. Canonical-root containment still sees the physical path: the fold's materialization
|
|
324
|
-
inputs resolve through that physical location, which then sits outside the alias root and fails
|
|
325
|
-
containment. Clone or move the repository; do not alias around the spaces.
|
|
326
|
-
|
|
327
|
-
This constraint is Hub-fold specific (the hook-contract verifier). Product-repo `/release` does not
|
|
328
|
-
run that script; still prefer a no-space checkout.
|
|
329
|
-
|
|
330
318
|
## Step 1 — merge to main (never force)
|
|
331
319
|
|
|
332
320
|
Full-track repos:
|
|
@@ -374,9 +362,10 @@ What the fold bumps, by repo:
|
|
|
374
362
|
prepare` — spine dogfood (`scripts/spine-dogfood.mjs`: verify docs/surfaces + the managed `.gitignore` block),
|
|
375
363
|
every registry-declared version holder, adapter payload synchronization, build output, and the public
|
|
376
364
|
artifact bill of materials — then verifies the set (`verify --skip-npm-view`). That prepare path runs
|
|
377
|
-
`scripts/check-hook-contract.mjs
|
|
378
|
-
|
|
379
|
-
|
|
365
|
+
`scripts/check-hook-contract.mjs`, which executes host adapter commands as a native argv without a
|
|
366
|
+
shell (#5605), so a checkout path that contains spaces is supported; the spaced-path argv regression
|
|
367
|
+
is pinned in `infra/plugin-set.test.mjs`. Publication and staging both derive from `surfaces.json`;
|
|
368
|
+
there is no second package list. Claude, Codex, Kimi, Cursor, and Kilo are active.
|
|
380
369
|
- **App-style repos with a root `package.json`** (most products): the manifest + lockfile version via
|
|
381
370
|
`npm version --no-git-tag-version`, kept in lockstep with the release tag.
|
|
382
371
|
- **Repos with neither:** nothing to fold — the tag is the version.
|