@mutmutco/codex-plugin 4.5.159 → 4.5.161

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/cli/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mutmutco/cli",
3
- "version": "4.5.159",
3
+ "version": "4.5.161",
4
4
  "description": "MMI Future CLI — the org dev toolbox and shared cross-IDE engine for every registry-declared MMI coding surface.",
5
5
  "type": "module",
6
6
  "license": "UNLICENSED",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mutmutco/codex-plugin",
3
- "version": "4.5.159",
3
+ "version": "4.5.161",
4
4
  "description": "MMI workflow skills and org gates delivery.",
5
5
  "author": {
6
6
  "name": "MMI Future",
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: board
3
- description: Show the repo workboard, then take it down in the fewest pull requests.
3
+ description: Show the repo workboard and clear it in the fewest PRs.
4
4
  ---
5
5
 
6
6
  # /board — your workboard, and the fastest way through it
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: bootstrap
3
- description: Provision a repo into the org with board, registry, rules, and plugin setup.
3
+ description: Provision an org repo with board, registry, rules, and plugin setup.
4
4
  ---
5
5
 
6
6
  **Host-native invocation:** Claude `/mmi:bootstrap` · Codex `$mmi:bootstrap` · jervcode `/bootstrap` · Hermes skill_view. A backticked `/name` in this doc names the matching workflow (this skill or a sibling), not a literal command.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: epic
3
- description: Decompose a vision or umbrella issue into linked child issues via one batch create.
3
+ description: Split a vision or umbrella issue into linked child issues in one batch.
4
4
  ---
5
5
 
6
6
  # /epic — decompose an umbrella into children
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: hotfix
3
- description: Promote an already-merged development fix to main and production through the gated Hub train.
3
+ description: Promote a merged development fix to main and production via the Hub train.
4
4
  ---
5
5
 
6
6
  **Host-native invocation:** Claude `/mmi:hotfix` · Codex `$mmi:hotfix` · jervcode `/hotfix` · Hermes skill_view. A backticked `/name` in this doc names the matching workflow (this skill or a sibling), not a literal command.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: mmi-help
3
- description: Show a short, human-readable introduction to MMI and its commands.
3
+ description: Introduce MMI and its commands.
4
4
  ---
5
5
 
6
6
  # MMI help
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: org-guide
3
- description: Read org rules for project work and reporting MMI CLI, plugin, or workflow bugs.
3
+ description: Read org project rules and how to report MMI CLI, plugin, or workflow bugs.
4
4
  ---
5
5
 
6
6
  # MMI organization guide
@@ -91,6 +91,8 @@ development. A trunk repository follows its single branch and declared workflow
91
91
  No box stage.
92
92
  - Trunk track: one main branch, without an rc/development promotion train. Follow the repository's
93
93
  declared publishing workflow rather than manufacturing train branches.
94
+ - Single track (MM-Work and its modules): one environment. Every merge to development auto-deploys
95
+ the `main` stage; there is no rc, dev stage or release train, and release, rcand and hotfix refuse.
94
96
  - Urgent already-merged fixes: use [hotfix](../../hotfix/SKILL.md), which carries selected development
95
97
  fixes directly to main on either track.
96
98
 
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: rcand
3
- description: Promote development to a release-candidate branch.
3
+ description: Promote development to a release candidate.
4
4
  ---
5
5
 
6
6
  **Host-native invocation:** Claude `/mmi:rcand` · Codex `$mmi:rcand` · jervcode `/rcand` · Hermes skill_view. A backticked `/name` in this doc names the matching workflow (this skill or a sibling), not a literal command.
@@ -82,7 +82,7 @@ Read the saved result, never the exit code (exit `1` = a follow-up failed after
82
82
  - `deployStatus` — `pending` is never terminal; `promoted: true` holds even when a deploy failed.
83
83
  - `served-channel(<product>)` row — the release's proof that new installs get it: the public `/release/version` pointer of the releasing repo's OWN channel (the Hub's `mmi`, or the product its registry `installer` declaration names; no declaration → no row), read after deploy and publish are green. `success` names the version read. `failure` is either a channel still on the previous version or a stale served process (the route answers 401/404): the note names what moves that channel and the exact remedy; run it, then re-read the pointer. `pending` means not probed (legs not green) or unreadable, never proof. The row is receipt evidence only, never a ledger leg, so it never blocks the next train.
84
84
  - `workflowRuns` — every run on the release SHA (deploy-model runs, any `push: main` deploy, the repo's own `gate`). On this host, discover them with the bounded run-list read below; filter locally by the exact receipt SHA. If the list hits its 100-row cap or returns no matching SHA, treat the run set as unverified and stop rather than infer completeness. Watch each matching non-success entry to conclusion: `gh run watch <run-id> --repo {owner}/{repo} --exit-status --interval 30`. Name which run is red: `deploy.yml` / `publish.yml` / `tenant-deploy.yml` / `jerv-gateway` is a deploy or publish verdict; a `gate` push run is ordinary CI sharing the SHA.
85
- - With `--watch` the train waits for its own alignment PR to land (true merge) and folds the ledger in the same run, so the receipt ends `succeeded` / `complete`. An external `gh run watch` never folds anything: if the receipt still shows a `pending` leg (no `--watch`, the alignment PR outlived the bounded wait, or a release-event `publish.yml` run on a registry-publish repo had not been correlated by the time the receipt was written — `--watch` waits for the alignment PR, not for that run, so a `publish` leg `pending` with no run URL after `--watch` is the expected direct-track shape, not a failure), fold it live before declaring the cut done or starting any new train: `mmi-cli devops release --resume --watch --json --out <fresh-receipt>`; the NEXT train's doctor otherwise refuses with `ledger-pending`.
85
+ - With `--watch`, require every follow-up complete before declaring the cut done. For any pending ledger leg, read [recovery.md](recovery.md) before continuing or starting a new train.
86
86
  - `announceNote` — `announced` (to the alerts channel for the Hub, to the project release channel for a product repo), `skipped`, `not announced` (deploy or publish not green; the note says whether a `--resume` carrying the same `--announce-summary-file` will post it), or the failure note. The channel id itself is never printed.
87
87
  - `devRollForward` / `rcAlignment` — `pushed`, or `pr-pending` with the alignment PR to land by true merge (Merge floor). An enqueued auto-merge is not evidence of the method; before reporting, read the enqueued method back — `gh pr view <n> --json autoMergeRequest --jq .autoMergeRequest.mergeMethod` — and prove it is `MERGE`. An enqueued `SQUASH` is a stop under the Merge floor, not something to wait out.
88
88
  - `versionFold`, `rcRetirement`, `checkout` — `returned`, or the named reason you are still on `main`.
@@ -98,21 +98,7 @@ Four facts close the verdict: the `origin/main..origin/development` count, the t
98
98
 
99
99
  ## Recovery
100
100
 
101
- Every refusal and every doctor blocker names its `code` and `anchor`: open `docs/Guides/train-troubleshooting.md#<code>` and follow that entry, nothing else. That guide is test-parsed, never free text — the infra drift and plugin-set suites validate every anchor cited here and assert policy from its wording — so an edit to it re-runs the infra suite (`npm --prefix infra test`) in the same PR: a heading or slug change is a code change. A pre-tag abort with no finding code (for example, a transient secrets-preflight timeout) is a transient stop: nothing was promoted and no tag was cut. Confirm no tag reached origin (`git ls-remote --tags origin` or `gh api repos/{owner}/{repo}/tags`), then rerun `mmi-cli devops release --apply` as a fresh cut, never `--resume`; resume is only for a partial release with the tag already on origin. A partial release (tag on origin, later phases pending or failed) continues with `mmi-cli devops release --resume --watch --json --out <fresh-receipt>` — the only continuation form: `--resume` never re-tags or republishes, posts a deferred announcement only when it is the run that first proves deploy and publish green, and `--apply` belongs to a new cut only. A SUPERSEDED leg is not a pending one: a ledger that records a supersession is phases-green — `--resume` must not be used on it, and the deferred announcement is the next patch train's to carry. A refused train is a stop (Merge floor): fix the cause on `development` through a normal PR, then rerun.
102
-
103
- **Exactly one continuation per ledger state.** Pick the row, run its verb, never combine two:
104
-
105
- - No tag on origin (pre-tag stop): a fresh `mmi-cli devops release --apply`.
106
- - A `deploy`/`publish` leg `pending` whose run already concluded (the `pending`, no-run-URL shape included): `mmi-cli devops train doctor --heal` folds it from that run (`ledger-unfolded`).
107
- - An `alignment` leg `pending` whose PR already merged: `mmi-cli devops train doctor --heal` (`ledger-alignment-stale`).
108
- - Any other `pending` leg (run in flight, alignment PR open): `mmi-cli devops release --resume --watch --json --out <fresh-receipt>`.
109
- - A `failed` leg with a transient cause: `--resume` after the cause clears (it spends the one bounded rerun); hotfix lane: `hotfix release <tag> --retry-deploy`.
110
- - A `failed` leg with a content cause on a published release: `--supersede-deploy` / `--supersede-publish` with master approval, then the next patch train.
111
- - A superseded ledger (phases-green): the next patch train. Never `--resume`.
112
-
113
- A **content-caused failed deploy leg on a published release** has no rerun that can succeed: the promoted tag is immutable, redeploying it rebuilds the same broken SHA, and the unresolved ledger blocks every lane — release, hotfix and candidate alike — while `--abort` is unavailable because the release is published. When the doctor's ledger blocker names `deploy` as the only unresolved leg and the deploy failure is proven content-caused (the deploy-time validator rejected the shipped content itself), the sanctioned exit is `mmi-cli devops release --supersede-deploy --apply` — an explicitly master-approved closure, run only after the cause fix is merged on `development`. It closes the deploy leg as superseded (the ledger turns phases-green), and the next patch train — usually `/hotfix`, which carries the fix to main — runs normally; its lifecycle gate archives the closed ledger aside. Never hand-edit the ledger file, never delete it to unblock a train.
114
-
115
- A **content-caused failed publish leg on a fully promoted release** is the same deadlock with its own exit: the tag is on `main` and the GitHub Release is live, so `--abort` refuses (it only ever deletes a proven unpublished candidate); `--resume` only re-reads the failed publish run — the tag is immutable, so no rerun can pass; `--supersede-deploy` is deploy-hardwired. When the doctor's ledger blocker names `publish` as the only unresolved leg and the publish failure is proven content-caused (a release gate rejected the shipped content — e.g. a platform-dependent distribution BOM — not a transient npm/transport error), the sanctioned exit is `mmi-cli devops release --supersede-publish --apply`, run only after the cause fix is merged on `development`. It closes the publish leg as superseded, the next patch train carries the fix, and its lifecycle gate archives the closed ledger. A transient publish failure (credentials, network, quota) is NOT content-caused: retry `--retry-publish <run-id>` or resolve the run instead. Once a leg is superseded, `--resume` is not the continuation: the ledger is phases-green, and resume leaves a superseded leg untouched and announces nothing, because superseded content never shipped. A superseded release has no standalone announce verb on purpose: its note is carried by the NEXT patch train's own announcement (the train that ships the cause fix), and the closed ledger archives the superseded release's record. If no CLI path fits and the release must be rebuilt by hand, the manual sequence — proven on the v1.62.1 recovery — is: retire the ledger path FIRST (archive `phases.json` aside, exactly as the ledger-failed receipt names), THEN delete the failed tag and GitHub Release, THEN re-cut the same version with a fresh `--apply` which re-points the tag onto the new bump. The order is a hard constraint: deleting the tag before the ledger path is retired deadlocks both `--abort` and `--resume`, because the ledger then anchors a tag that no longer proves anything.
101
+ On any failure, read [recovery.md](recovery.md).
116
102
 
117
103
  ## Merge floor
118
104
 
@@ -0,0 +1,22 @@
1
+ # Release recovery and ledger continuation
2
+
3
+
4
+ Every refusal and every doctor blocker names its `code` and `anchor`: open `docs/Guides/train-troubleshooting.md#<code>` and follow that entry, nothing else. That guide is test-parsed, never free text — the infra drift and plugin-set suites validate every anchor cited here and assert policy from its wording — so an edit to it re-runs the infra suite (`npm --prefix infra test`) in the same PR: a heading or slug change is a code change. A pre-tag abort with no finding code (for example, a transient secrets-preflight timeout) is a transient stop: nothing was promoted and no tag was cut. Confirm no tag reached origin (`git ls-remote --tags origin` or `gh api repos/{owner}/{repo}/tags`), then rerun `mmi-cli devops release --apply` as a fresh cut, never `--resume`; resume is only for a partial release with the tag already on origin. A partial release (tag on origin, later phases pending or failed) continues with `mmi-cli devops release --resume --watch --json --out <fresh-receipt>` — the only continuation form: `--resume` never re-tags or republishes, posts a deferred announcement only when it is the run that first proves deploy and publish green, and `--apply` belongs to a new cut only. A SUPERSEDED leg is not a pending one: a ledger that records a supersession is phases-green — `--resume` must not be used on it, and the deferred announcement is the next patch train's to carry. A refused train is a stop (Merge floor): fix the cause on `development` through a normal PR, then rerun.
5
+
6
+ **Exactly one continuation per ledger state.** Pick the row, run its verb, never combine two:
7
+
8
+ - No tag on origin (pre-tag stop): a fresh `mmi-cli devops release --apply`.
9
+ - A `deploy`/`publish` leg `pending` whose run already concluded (the `pending`, no-run-URL shape included): `mmi-cli devops train doctor --heal` folds it from that run (`ledger-unfolded`).
10
+ - An `alignment` leg `pending` whose PR already merged: `mmi-cli devops train doctor --heal` (`ledger-alignment-stale`).
11
+ - Any other `pending` leg (run in flight, alignment PR open): `mmi-cli devops release --resume --watch --json --out <fresh-receipt>`.
12
+ - A `failed` leg with a transient cause: `--resume` after the cause clears (it spends the one bounded rerun); hotfix lane: `hotfix release <tag> --retry-deploy`.
13
+ - A `failed` leg with a content cause on a published release: `--supersede-deploy` / `--supersede-publish` with master approval, then the next patch train.
14
+ - A superseded ledger (phases-green): the next patch train. Never `--resume`.
15
+
16
+ A **content-caused failed deploy leg on a published release** has no rerun that can succeed: the promoted tag is immutable, redeploying it rebuilds the same broken SHA, and the unresolved ledger blocks every lane — release, hotfix and candidate alike — while `--abort` is unavailable because the release is published. When the doctor's ledger blocker names `deploy` as the only unresolved leg and the deploy failure is proven content-caused (the deploy-time validator rejected the shipped content itself), the sanctioned exit is `mmi-cli devops release --supersede-deploy --apply` — an explicitly master-approved closure, run only after the cause fix is merged on `development`. It closes the deploy leg as superseded (the ledger turns phases-green), and the next patch train — usually `/hotfix`, which carries the fix to main — runs normally; its lifecycle gate archives the closed ledger aside. Never hand-edit the ledger file, never delete it to unblock a train.
17
+
18
+ A **content-caused failed publish leg on a fully promoted release** is the same deadlock with its own exit: the tag is on `main` and the GitHub Release is live, so `--abort` refuses (it only ever deletes a proven unpublished candidate); `--resume` only re-reads the failed publish run — the tag is immutable, so no rerun can pass; `--supersede-deploy` is deploy-hardwired. When the doctor's ledger blocker names `publish` as the only unresolved leg and the publish failure is proven content-caused (a release gate rejected the shipped content — e.g. a platform-dependent distribution BOM — not a transient npm/transport error), the sanctioned exit is `mmi-cli devops release --supersede-publish --apply`, run only after the cause fix is merged on `development`. It closes the publish leg as superseded, the next patch train carries the fix, and its lifecycle gate archives the closed ledger. A transient publish failure (credentials, network, quota) is NOT content-caused: retry `--retry-publish <run-id>` or resolve the run instead. Once a leg is superseded, `--resume` is not the continuation: the ledger is phases-green, and resume leaves a superseded leg untouched and announces nothing, because superseded content never shipped. A superseded release has no standalone announce verb on purpose: its note is carried by the NEXT patch train's own announcement (the train that ships the cause fix), and the closed ledger archives the superseded release's record. If no CLI path fits and the release must be rebuilt by hand, the manual sequence — proven on the v1.62.1 recovery — is: retire the ledger path FIRST (archive `phases.json` aside, exactly as the ledger-failed receipt names), THEN delete the failed tag and GitHub Release, THEN re-cut the same version with a fresh `--apply` which re-points the tag onto the new bump. The order is a hard constraint: deleting the tag before the ledger path is retired deadlocks both `--abort` and `--resume`, because the ledger then anchors a tag that no longer proves anything.
19
+
20
+ ## Ledger reference
21
+
22
+ - With `--watch` the train waits for its own alignment PR to land (true merge) and folds the ledger in the same run, so the receipt ends `succeeded` / `complete`. An external `gh run watch` never folds anything: if the receipt still shows a `pending` leg (no `--watch`, the alignment PR outlived the bounded wait, or a release-event `publish.yml` run on a registry-publish repo had not been correlated by the time the receipt was written — `--watch` waits for the alignment PR, not for that run, so a `publish` leg `pending` with no run URL after `--watch` is the expected direct-track shape, not a failure), fold it live before declaring the cut done or starting any new train: `mmi-cli devops release --resume --watch --json --out <fresh-receipt>`; the NEXT train's doctor otherwise refuses with `ledger-pending`.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: secrets
3
- description: Manage the full own-project vault and granted org-infra secret names.
3
+ description: Manage the project vault and granted org-infra secrets.
4
4
  ---
5
5
 
6
6
  **Host-native invocation:** Claude `/mmi:secrets` · Codex `$mmi:secrets` · jervcode `/secrets` · Hermes skill_view. A backticked `/name` in this doc names the matching workflow (this skill or a sibling), not a literal command.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: stage
3
- description: Run a local test stage, or a personal cloud dev stage with --live.
3
+ description: Run a local test stage or personal cloud dev stage with --live.
4
4
  ---
5
5
 
6
6
  **Host-native invocation:** Claude `/mmi:stage` · Codex `$mmi:stage` · jervcode `/stage` · Hermes skill_view. A backticked `/name` in this doc names the matching workflow (this skill or a sibling), not a literal command.