@mutmutco/codex-plugin 4.3.14 → 4.3.16

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.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mmi",
3
- "version": "4.3.14",
3
+ "version": "4.3.16",
4
4
  "mmiCompat": "4.x",
5
5
  "description": "MMI workflow skills and org gates delivery.",
6
6
  "author": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mutmutco/codex-plugin",
3
- "version": "4.3.14",
3
+ "version": "4.3.16",
4
4
  "description": "MMI workflow skills and org gates delivery.",
5
5
  "author": {
6
6
  "name": "MMI Future",
@@ -366,9 +366,13 @@ collaborator list + the per-branch allowlist are the record — no separate rost
366
366
  `pytest` / `pip install -e ".[dev]"` with `--var GATE_PY_VERSION=` (3.11 default). The runtime selects
367
367
  which setup step (`setup-node` vs `setup-python`) the rendered `if:` fires. The check command runs
368
368
  under the org **wall-clock budget** (#3178): the render pins `run-with-budget` to the CLI's blessed SHA
369
+ (since #6256 that one pin also covers the `zeroci-verify` step — both actions ship from the same Hub commit)
369
370
  with `--var GATE_MAX_SECONDS=` (300s onboarding default — tighten once the gate is measured, via
370
371
  `--var` or `org project set <repo> --var gate={"maxSeconds":N}`); `ci audit` and the release train
371
- both enforce the step, so do not remove it. `bootstrap apply --execute` installs that JSON as the
372
+ both enforce the step, so do not remove it. ZeroCI C3 (#6254): `--var GATE_AFFECTED_CMD=...` (or
373
+ `gate={"affectedCmd":"..."}`) runs an affected-only selection on pull_request instead of `GATE_CMD`;
374
+ empty (default) keeps the full suite on PRs. Pushes, tags and the rendered nightly `schedule`
375
+ (`17 3 * * *` on the default branch) always run the full `GATE_CMD` — that nightly is the drift catcher. `bootstrap apply --execute` installs that JSON as the
372
376
  repository ruleset itself (#6070) and reports one `product-ruleset` row: `PARK` (the gate file is not on
373
377
  the base branch yet — installed disabled), `WAIT` (the gate exists but has not emitted a proven-green
374
378
  `gate` context — kept disabled; re-run apply after the gate passes), `ACTIVATE` (gate green — enforcement
@@ -550,6 +554,7 @@ Before your final report, answer one question honestly: did **this skill's own i
550
554
  this run — ambiguous wording, a misleading message, or an environment failure it should have warned
551
555
  about? (Process only — never the user's code or task; e.g. an ambiguous seed, registry, or OIDC step, or
552
556
  a guard that fired on a healthy repo.) If yes, file **one** lesson and move on; a clean run is silent
553
- (hard cap: one per run). It lands on the Hub board (deduped) and is fixed only via a reviewed PR — never
554
- edit the skill live; the retro is advisory, so if the call fails, note it and continue:
555
- `mmi-cli learning skill-lesson --skill bootstrap --title "<what misfired>" --body "<what; evidence; proposed amendment>"`
557
+ (hard cap: one per run). It lands on the owning board (deduped) and is fixed only via a reviewed PR — never
558
+ edit the skill live; the retro is advisory, so if the call fails, note it and continue. In-session, call the
559
+ `jerv_learning_note` tool with origin retro; the machine fallback is:
560
+ `jervcode learn --origin retro --surface skills --title "bootstrap: <what misfired>" --body "<what; evidence; proposed amendment>"`
@@ -1,6 +1,9 @@
1
1
  name: gate
2
2
  # Org-standard green-before-merge gate for product repos (#1333). Runs on PRs, train-branch pushes,
3
3
  # and v* tags so /release and /hotfix can discover required contexts on the tagged SHA.
4
+ # ZeroCI C3 (#6254): a nightly `schedule` run on the default branch executes the FULL GATE_CMD even when
5
+ # a signed receipt already proves the tree — the drift catcher for affected-only PR selection
6
+ # (GATE_AFFECTED_CMD) and for stale receipts. The job `if:` below admits `schedule` (it is not a push).
4
7
  #
5
8
  # Runner: self-hosted mmi-runner (mmi-live) — see docs/Guides/gh-runner-runbook.md in MMI-Hub.
6
9
  # #4118: if GATE_CMD runs tsgo or other memory-heavy typecheck / browser work, pin this job to
@@ -11,6 +14,9 @@ name: gate
11
14
  # bootstrap with --var):
12
15
  # GATE_RUNTIME — node | python (selects which setup step fires)
13
16
  # GATE_CMD — the check command ({{GATE_CMD}})
17
+ # GATE_AFFECTED_CMD — affected-only check command run on pull_request instead of GATE_CMD (#6254);
18
+ # empty (default) renders GATE_CMD here too, so the PR gate stays the full suite.
19
+ # Pushes, tags and the nightly schedule always run GATE_CMD. ({{GATE_AFFECTED_CMD}})
14
20
  # GATE_INSTALL_CMD — the dependency-install command ({{GATE_INSTALL_CMD}})
15
21
  # GATE_WORKDIR — app working directory when not the repo root ({{GATE_WORKDIR}})
16
22
  # GATE_CACHE_DEP_PATH— npm lockfile path for runner-checkout heal ({{GATE_CACHE_DEP_PATH}})
@@ -22,7 +28,8 @@ name: gate
22
28
  # GATE_FULL_RUN_BRANCH — train branch whose PUSHES run the full gate job (development on full/direct;
23
29
  # main on trunk). `main` is ALWAYS included in the job `if:` below so a required-
24
30
  # checks ruleset on main cannot be silently skipped by a future bootstrap (#4113).
25
- # GATE_BUDGET_SHA is rendered by the CLI from its blessed run-with-budget pin — not an operator knob.
31
+ # GATE_BUDGET_SHA is rendered by the CLI from its blessed run-with-budget pin — not an operator knob. It
32
+ # also pins zeroci-verify (MMI-Hub#6253): both actions ship from the same Hub commit.
26
33
  # GATE_RUNNER_SHA pins the org runner-checkout / runner-node-toolchain actions (#5610).
27
34
  # Estate policy 2026-08-23: GitHub-hosted Windows (`windows-latest` / windows-*) is forbidden org-wide.
28
35
  # Do not add a windows-compat (or any other) job that runs-on GH-hosted Windows. Linux self-hosted
@@ -34,6 +41,9 @@ on:
34
41
  push:
35
42
  branches: {{GATE_PUSH_BRANCHES_YAML}}
36
43
  tags: ['v*']
44
+ # #6254: nightly full run on the default branch — catches affected-only drift and stale receipts.
45
+ schedule:
46
+ - cron: '17 3 * * *'
37
47
 
38
48
  env:
39
49
  FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true
@@ -48,6 +58,8 @@ concurrency:
48
58
 
49
59
  permissions:
50
60
  contents: read
61
+ # MMI-Hub#6253: ZeroCI receipts are commit statuses on the PR head; the gate reads them, never writes them.
62
+ statuses: read
51
63
 
52
64
  jobs:
53
65
  gate:
@@ -115,10 +127,31 @@ jobs:
115
127
  if: ${{ '{{GATE_RUNTIME}}' == 'python' }}
116
128
  run: |
117
129
  python3 --version || { echo "::error title=CI runner toolchain::RUNNER NOT PROVISIONED — python3 not on PATH after setup-python. This is the runner, not your diff; no install or test ran. Re-run the job; if it persists the mmi-runner python toolchain needs attention (docs/Guides/gh-runner-runbook.md in MMI-Hub)."; exit 1; }
130
+ # MMI-Hub#6253 ZeroCI: skip the install and the budgeted run when a trusted seat already ran this
131
+ # exact command on this exact tree (receipt = commit status zeroci/<command> on the PR head). It
132
+ # needs only git and gh, so it sits before the install. Only `verified=true` skips;
133
+ # absent/stale/unreadable fall through to the install and the budgeted run below.
134
+ - id: zeroci
135
+ uses: mutmutco/MMI-Hub/.github/actions/zeroci-verify@{{GATE_BUDGET_SHA}}
136
+ with:
137
+ command: {{GATE_CMD}}
138
+ working-directory: {{GATE_WORKDIR}}
139
+ head-sha: ${{ github.event.pull_request.head.sha || github.sha }}
118
140
  - run: {{GATE_INSTALL_CMD}}
141
+ if: ${{ steps.zeroci.outputs.verified != 'true' || github.event_name == 'schedule' }}
119
142
  # #3178: the check runs under the org wall-clock budget — a hung suite dies at the ceiling instead
120
143
  # of squatting a runner lane for GitHub's 6h default. ci-audit + the release train enforce this step.
121
- - uses: mutmutco/MMI-Hub/.github/actions/run-with-budget@{{GATE_BUDGET_SHA}}
144
+ # #6254 (ZeroCI C3): two complementary budget steps. pull_request runs GATE_AFFECTED_CMD (rendered
145
+ # equal to GATE_CMD until the knob is set); every other trigger runs the full GATE_CMD. The nightly
146
+ # schedule runs even when the zeroci receipt already proves the tree — that is its whole point.
147
+ - if: ${{ steps.zeroci.outputs.verified != 'true' && github.event_name == 'pull_request' }}
148
+ uses: mutmutco/MMI-Hub/.github/actions/run-with-budget@{{GATE_BUDGET_SHA}}
149
+ with:
150
+ command: {{GATE_AFFECTED_CMD}}
151
+ max-seconds: {{GATE_MAX_SECONDS}}
152
+ working-directory: {{GATE_WORKDIR}}
153
+ - if: ${{ github.event_name != 'pull_request' && (steps.zeroci.outputs.verified != 'true' || github.event_name == 'schedule') }}
154
+ uses: mutmutco/MMI-Hub/.github/actions/run-with-budget@{{GATE_BUDGET_SHA}}
122
155
  with:
123
156
  command: {{GATE_CMD}}
124
157
  max-seconds: {{GATE_MAX_SECONDS}}
@@ -123,6 +123,7 @@ Before your final report, answer one question honestly: did **this skill's own i
123
123
  this run — ambiguous wording, a misleading message, or an environment failure it should have warned
124
124
  about? (Process only — never the user's code or task; e.g. a batch schema that rejected a valid row, or a
125
125
  link that attached to the wrong parent.) If yes, file **one** lesson and move on; a clean run is silent
126
- (hard cap: one per run). It lands on the Hub board (deduped) and is fixed only via a reviewed PR — never
127
- edit the skill live; the retro is advisory, so if the call fails, note it and continue:
128
- `mmi-cli learning skill-lesson --skill epic --title "<what misfired>" --body "<what; evidence; proposed amendment>"`
126
+ (hard cap: one per run). It lands on the owning board (deduped) and is fixed only via a reviewed PR — never
127
+ edit the skill live; the retro is advisory, so if the call fails, note it and continue. In-session, call the
128
+ `jerv_learning_note` tool with origin retro; the machine fallback is:
129
+ `jervcode learn --origin retro --surface skills --title "epic: <what misfired>" --body "<what; evidence; proposed amendment>"`
@@ -95,8 +95,8 @@ Title first, verdict first. Name the resolved tag (never a placeholder like `vX.
95
95
 
96
96
  ## Retro
97
97
 
98
- Before the final report, answer one question honestly: did this skill's own instructions misfire this run — ambiguous wording, a misleading message, or an environment failure it should have warned about? Process only, never the user's code or task. If yes, file one lesson and move on; a clean run is silent (hard cap: one per run). It lands on the Hub board, deduplicated, and is fixed only through a reviewed PR — never edit the skill live. The retro is advisory: if the call fails, note it and continue. The amendment itself stays reference-free: the skill-drift gate rejects issue references in any section outside Merge floor, so carry the evidence in words or point at the guide entry — never inline reference markers.
98
+ Before the final report, answer one question honestly: did this skill's own instructions misfire this run — ambiguous wording, a misleading message, or an environment failure it should have warned about? Process only, never the user's code or task. If yes, file one lesson and move on; a clean run is silent (hard cap: one per run). It lands on the owning board, deduplicated, and is fixed only through a reviewed PR — never edit the skill live. The retro is advisory: if the call fails, note it and continue. In-session, call the `jerv_learning_note` tool with origin retro and let it queue the lesson; the command below is the machine fallback. The amendment itself stays reference-free: the skill-drift gate rejects issue references in any section outside Merge floor, so carry the evidence in words or point at the guide entry — never inline reference markers.
99
99
 
100
100
  ```bash
101
- mmi-cli learning skill-lesson --skill hotfix --title "<what misfired>" --body "<what; evidence; proposed amendment>"
101
+ jervcode learn --origin retro --surface skills --title "hotfix: <what misfired>" --body "<what; evidence; proposed amendment>"
102
102
  ```
@@ -73,8 +73,8 @@ Title first, verdict first. Name the resolved tag (never a placeholder like `vX.
73
73
 
74
74
  ## Retro
75
75
 
76
- Before the final report, answer one question honestly: did this skill's own instructions misfire this run — ambiguous wording, a misleading message, or an environment failure it should have warned about? Process only, never the user's code or task. If yes, file one lesson and move on; a clean run is silent (hard cap: one per run). It lands on the Hub board, deduplicated, and is fixed only through a reviewed PR — never edit the skill live. The retro is advisory: if the call fails, note it and continue. The amendment itself stays reference-free: the skill-drift gate rejects issue references in any section outside Merge floor, so carry the evidence in words or point at the guide entry — never inline reference markers.
76
+ Before the final report, answer one question honestly: did this skill's own instructions misfire this run — ambiguous wording, a misleading message, or an environment failure it should have warned about? Process only, never the user's code or task. If yes, file one lesson and move on; a clean run is silent (hard cap: one per run). It lands on the owning board, deduplicated, and is fixed only through a reviewed PR — never edit the skill live. The retro is advisory: if the call fails, note it and continue. In-session, call the `jerv_learning_note` tool with origin retro and let it queue the lesson; the command below is the machine fallback. The amendment itself stays reference-free: the skill-drift gate rejects issue references in any section outside Merge floor, so carry the evidence in words or point at the guide entry — never inline reference markers.
77
77
 
78
78
  ```bash
79
- mmi-cli learning skill-lesson --skill rcand --title "<what misfired>" --body "<what; evidence; proposed amendment>"
79
+ jervcode learn --origin retro --surface skills --title "rcand: <what misfired>" --body "<what; evidence; proposed amendment>"
80
80
  ```
@@ -82,8 +82,8 @@ Title first, verdict first. Name the resolved tag (never a placeholder like `vX.
82
82
 
83
83
  ## Retro
84
84
 
85
- Before the final report, answer one question honestly: did this skill's own instructions misfire this run — ambiguous wording, a misleading message, or an environment failure it should have warned about? Process only, never the user's code or task. If yes, file one lesson and move on; a clean run is silent (hard cap: one per run). It lands on the Hub board, deduplicated, and is fixed only through a reviewed PR — never edit the skill live. The retro is advisory: if the call fails, note it and continue. The amendment itself stays reference-free: the skill-drift gate rejects issue references in any section outside Merge floor, so carry the evidence in words or point at the guide entry — never inline reference markers.
85
+ Before the final report, answer one question honestly: did this skill's own instructions misfire this run — ambiguous wording, a misleading message, or an environment failure it should have warned about? Process only, never the user's code or task. If yes, file one lesson and move on; a clean run is silent (hard cap: one per run). It lands on the owning board, deduplicated, and is fixed only through a reviewed PR — never edit the skill live. The retro is advisory: if the call fails, note it and continue. In-session, call the `jerv_learning_note` tool with origin retro and let it queue the lesson; the command below is the machine fallback. The amendment itself stays reference-free: the skill-drift gate rejects issue references in any section outside Merge floor, so carry the evidence in words or point at the guide entry — never inline reference markers.
86
86
 
87
87
  ```bash
88
- mmi-cli learning skill-lesson --skill release --title "<what misfired>" --body "<what; evidence; proposed amendment>"
88
+ jervcode learn --origin retro --surface skills --title "release: <what misfired>" --body "<what; evidence; proposed amendment>"
89
89
  ```
@@ -163,6 +163,7 @@ Before your final report, answer one question honestly: did **this skill's own i
163
163
  this run — ambiguous wording, a misleading message, or an environment failure it should have warned
164
164
  about? (Process only — never the user's code or task; e.g. a canonical-name or tier mix-up, or a step
165
165
  that risked echoing a value.) If yes, file **one** lesson and move on; a clean run is silent (hard cap:
166
- one per run). It lands on the Hub board (deduped) and is fixed only via a reviewed PR — never edit the
167
- skill live; the retro is advisory, so if the call fails, note it and continue:
168
- `mmi-cli learning skill-lesson --skill secrets --title "<what misfired>" --body "<what; evidence; proposed amendment>"`
166
+ one per run). It lands on the owning board (deduped) and is fixed only via a reviewed PR — never edit the
167
+ skill live; the retro is advisory, so if the call fails, note it and continue. In-session, call the
168
+ `jerv_learning_note` tool with origin retro; the machine fallback is:
169
+ `jervcode learn --origin retro --surface skills --title "secrets: <what misfired>" --body "<what; evidence; proposed amendment>"`
@@ -173,6 +173,7 @@ Before your final report, answer one question honestly: did **this skill's own i
173
173
  this run — ambiguous wording, a misleading message, or an environment failure it should have warned
174
174
  about? (Process only — never the user's code or task; e.g. a teardown that left a port bound, or a
175
175
  Playwright output path aimed at the repo root.) If yes, file **one** lesson and move on; a clean run is
176
- silent (hard cap: one per run). It lands on the Hub board (deduped) and is fixed only via a reviewed PR —
177
- never edit the skill live; the retro is advisory, so if the call fails, note it and continue:
178
- `mmi-cli learning skill-lesson --skill stage --title "<what misfired>" --body "<what; evidence; proposed amendment>"`
176
+ silent (hard cap: one per run). It lands on the owning board (deduped) and is fixed only via a reviewed PR —
177
+ never edit the skill live; the retro is advisory, so if the call fails, note it and continue. In-session, call the
178
+ `jerv_learning_note` tool with origin retro; the machine fallback is:
179
+ `jervcode learn --origin retro --surface skills --title "stage: <what misfired>" --body "<what; evidence; proposed amendment>"`