@mutmutco/pi-plugin 4.1.5 → 4.1.7

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/pi-plugin",
3
- "version": "4.1.5",
3
+ "version": "4.1.7",
4
4
  "description": "MMI workflow skills and org gates delivery.",
5
5
  "author": {
6
6
  "name": "MMI Future",
@@ -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. **Hub hotfix release runs the same distribution fold as
57
- `/release`:** if `process.cwd()` contains whitespace, stop before `hotfix start` / `hotfix release`
58
- touches local `main` (#5603). Relocate the clone to a real no-space path. A subst / junction /
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
@@ -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`; Step 0e must already have passed, or the Cursor probe splits on a
378
- spaced checkout. Publication and staging both derive from `surfaces.json`; there is no second package
379
- list. Claude, Codex, Kimi, Cursor, and Kilo are active.
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.