@mutmutco/pi-plugin 4.6.25 → 4.6.27

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.6.25",
3
+ "version": "4.6.27",
4
4
  "description": "MMI workflow skills and org gates delivery.",
5
5
  "author": {
6
6
  "name": "MMI Future",
@@ -172,11 +172,15 @@ jobs:
172
172
  # MMI-Hub#5871: declare the npm MAJOR rather than inheriting whatever the runner's node bundles.
173
173
  # A bare major, never an exact patch (it goes stale and then prescribes downgrading operator
174
174
  # hosts toward it, #5862) and never `latest` (it takes the next major silently, #4782).
175
+ # MMI-Hub#9850: this single gate job is the designated hosted npm cache writer (auto saves only on a
176
+ # default-branch push), keyed on the one lockfile its install uses.
175
177
  - if: ${{ steps.development-gate.outputs.reuse != 'true' && ('{{GATE_RUNTIME}}' == 'node') }}
176
178
  uses: mutmutco/MMI-Hub/.github/actions/runner-node-toolchain@{{GATE_RUNNER_SHA}}
177
179
  with:
178
180
  node-version: 24
179
181
  npm-version: '12'
182
+ hosted-npm-cache: auto
183
+ hosted-npm-cache-lockfiles: {{GATE_CACHE_DEP_PATH}}
180
184
  - if: ${{ steps.development-gate.outputs.reuse != 'true' && ('{{GATE_RUNTIME}}' == 'python') }}
181
185
  uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0
182
186
  with: { python-version: '{{GATE_PY_VERSION}}' }
@@ -37,11 +37,17 @@ jobs:
37
37
  - name: Isolate npm cache
38
38
  if: ${{ steps.development-gate.outputs.reuse != 'true' }}
39
39
  run: echo "NPM_CONFIG_CACHE=$RUNNER_TEMP/npm-cache" >> "$GITHUB_ENV"
40
+ # MMI-Hub#9850: the single gate job is the designated hosted npm cache writer (auto saves only on a
41
+ # default-branch push), keyed on both lockfiles its two installs below use.
40
42
  - uses: mutmutco/MMI-Hub/.github/actions/runner-node-toolchain@{{GATE_RUNNER_SHA}}
41
43
  if: ${{ steps.development-gate.outputs.reuse != 'true' }}
42
44
  with:
43
45
  node-version: 24
44
46
  npm-version: '12'
47
+ hosted-npm-cache: auto
48
+ hosted-npm-cache-lockfiles: |
49
+ package-lock.json
50
+ module/package-lock.json
45
51
  - run: npm ci --no-audit --no-fund
46
52
  if: ${{ steps.development-gate.outputs.reuse != 'true' }}
47
53
  - run: npm ci --prefix module --no-audit --no-fund
@@ -114,7 +114,11 @@ requests like this should follow this structure, not prose guide."
114
114
  Before building visual A/B boards, use front-loaded **Impeccable v4.7.0** alongside **21st.dev MCP**
115
115
  (`https://21st.dev/api/mcp`; verbatim owner ruling: `"we don't need the mcp better design yet,
116
116
  impeccable and 21st is enough"`, dropping Better Design MCP) to study high-craft reference patterns,
117
- layout proportions, and interaction details. Always translate inspired patterns into zero-GPU
117
+ layout proportions, and interaction details. Actually query the 21st.dev MCP; in the Phase 0
118
+ handoff/A-B brief, report the queries issued and returned component/pattern names and IDs
119
+ (where provided). If unreachable, report the exact error; if empty, report "no results".
120
+ Neither case supports a 21st inspiration claim. Never describe patterns as 21st-inspired
121
+ without this query/result record. Always translate inspired patterns into zero-GPU
118
122
  `@mutmutco/mmwork-ds` tokens (`--card-blur: none`, `--card-tint-dark: 0%`, `--card-tint-light: 0%`,
119
123
  sleek translucent glass cards) and Atomic Design layers; never copy raw third-party CSS/HTML or
120
124
  GPU-heavy effects. `MM-Inspo` is strictly a customer/tenant module inside the MM-Work suite, never
@@ -56,6 +56,11 @@ design work follows one harmonized **Front-Loaded Impeccable v4.7.0 + MM Artifac
56
56
  before choosing pieces; `exists` reports whether the requested guide exists. Never guess
57
57
  repo-root `node_modules/@mutmutco/mmwork-ds/docs/components/<Piece>.md`; component guides
58
58
  live in `<Piece>/guide.md`. No install/cache means capability remains unknown.
59
+ **Loading state comes from the content (#9851).** A page or component renders its loading state
60
+ from the same component tree as its real content: the kit Page `busy` or the component's own
61
+ loading state, drawing the real rows inert or hidden. Never hand-author a separate placeholder
62
+ skeleton kept in sync by hand. Every UI change checks the loading and loaded DOM structure match,
63
+ so an indicator cannot drift from the content it fronts.
59
64
 
60
65
  How the five pillars fit together (owner, 2026-10-25):
61
66
 
@@ -285,7 +290,11 @@ requests like this should follow this structure, not prose guide."
285
290
  Before building visual A/B boards, use front-loaded **Impeccable v4.7.0** alongside **21st.dev MCP**
286
291
  (`https://21st.dev/api/mcp`; verbatim owner ruling: `"we don't need the mcp better design yet,
287
292
  impeccable and 21st is enough"`, dropping Better Design MCP) to study high-craft reference patterns,
288
- layout proportions, and interaction details. Always translate inspired patterns into zero-GPU
293
+ layout proportions, and interaction details. Actually query the 21st.dev MCP; in the Phase 0
294
+ handoff/A-B brief, report the queries issued and returned component/pattern names and IDs
295
+ (where provided). If unreachable, report the exact error; if empty, report "no results".
296
+ Neither case supports a 21st inspiration claim. Never describe patterns as 21st-inspired
297
+ without this query/result record. Always translate inspired patterns into zero-GPU
289
298
  `@mutmutco/mmwork-ds` tokens (`--card-blur: none`, `--card-tint-dark: 0%`, `--card-tint-light: 0%`,
290
299
  sleek translucent glass cards) and Atomic Design layers; never copy raw third-party CSS/HTML or
291
300
  GPU-heavy effects. `MM-Inspo` is strictly a customer/tenant module inside the MM-Work suite, never
@@ -161,6 +161,8 @@ Production changes require explicit authorization from the authorized human.
161
161
  Read the selected release skill before operating the train. Let it choose versions, run gates,
162
162
  publish, deploy, and verify the resulting release. A refusal requires fixing its cause; do not
163
163
  finish by hand, bypass checks, or start a duplicate release.
164
+ Finish the board before a release cut: every item of this cycle is merged and `Done` first; a queued
165
+ lane is not a landed one.
164
166
  Versions: patch is the default for fixes and small compatible additions. Minor is a deliberate call
165
167
  for a real feature, with a one-line reason. Major is a new start or direction and needs the owner's
166
168
  fresh approval before tagging. A breaking change refuses until it is shimmed or made an approved
@@ -15,6 +15,8 @@ Read `mmi-cli oracle org project get {owner}/{repo} --json` and name the lane ([
15
15
 
16
16
  ## Preflight
17
17
 
18
+ Board first: `mmi-cli oracle board read --repo <owner/repo>`; cut only once every in-flight item of this cycle is merged and `Done` ([train-common.md](train-common.md#board-first)).
19
+
18
20
  `mmi-cli devops train doctor --lane release --heal --json`; read it per [train-common.md](train-common.md#doctor).
19
21
 
20
22
  ## Apply
@@ -1,7 +1,11 @@
1
- # Train skills: shared doctor, recovery, merge floor, report and retro
1
+ # Train skills: shared board-first, doctor, recovery, merge floor, report and retro
2
2
 
3
3
  `/release`, `/rcand` and `/hotfix` read this one file (from a sibling skill: `../release/train-common.md`). Each skill keeps only what differs by lane.
4
4
 
5
+ ## Board first
6
+
7
+ Before any release cut, read the repo's own board: `mmi-cli oracle board read --repo <owner/repo>`. Every in-flight item of this cycle — claimed, in review, queued in the autolander, or awaiting landing — must be merged and `Done` first. A queued lane is not a landed one: wait for its landing to report merge and board `Done`. The cut is the last step of a board cycle, never interleaved with pending landings; otherwise the version ships without them and needs a second cut. Standing backlog nobody is working is not in flight and does not block.
8
+
5
9
  ## Doctor
6
10
 
7
11
  The preflight JSON is on stdout alone: a stale CLI first prints its self-update notice on stderr and re-runs itself, so parse stdout only, never `2>&1`. Read `ready`, then `findings[]`: each carries `code`, `severity` (`blocker` · `warning` · `healed` · `info`), `source` (`local` · `origin`), `remedy` and `anchor`. `ready: false` → stop and quote every blocker's `code` and `remedy`; an unread origin is never green. The apply step (`release --apply`, `rcand --apply`, `hotfix start`, `hotfix release`) re-runs the doctor first, with heal on.