@mutmutco/codex-plugin 4.6.10 → 4.6.12

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.6.10",
3
+ "version": "4.6.12",
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.6.10",
3
+ "version": "4.6.12",
4
4
  "description": "MMI workflow skills and org gates delivery.",
5
5
  "author": {
6
6
  "name": "MMI Future",
@@ -39,6 +39,9 @@ name: gate
39
39
  # checks ruleset on main cannot be silently skipped by a future bootstrap (#4113).
40
40
  # GATE_BUDGET_SHA is rendered by the CLI from its blessed run-with-budget pin — not an operator knob.
41
41
  # GATE_RUNNER_SHA pins the org runner-checkout / runner-node-toolchain actions (#5610).
42
+ # GATE_VERDICT_STEP_YAML (org CI H1) renders the first step from the blessed verdict-receipt pin: a train push
43
+ # reuses the merge queue's exact-SHA verdict, an rc tag the train push verdict (#8206). merge_group is the full
44
+ # set here (only pull_request fails fast or skips), so `queue-is-full-verdict: 'true'` holds. Empty pin: the legacy #8206 rc-tag step.
42
45
  # #9248 supersedes #8911's "existing self-hosted capacity only; no hosted fallback": standard included
43
46
  # GitHub-hosted images are the default source for CI, and #8671's hosted-lane ban is retired. Larger/paid
44
47
  # images stay refused (#8911) — they bill above the included allowance, which the spending limit guards.
@@ -56,13 +59,15 @@ env:
56
59
  # #3001: cancel superseded runs — agent push-bursts queue a full fresh run per push.
57
60
  # Per-PR group only (a repo-wide group hits GitHub's one-pending-slot limit and cancels
58
61
  # innocent queued runs — MMC-ZuberShade#880). Pushes group by ref: each tag and the train
59
- # branch supersede only themselves.
62
+ # branch supersede only themselves. Org CI H1 (Merv, 2 Nov 2026): only PR runs cancel in progress. A running
63
+ # push run always finishes (Hub#7710); GitHub keeps only the newest pending push per ref, and each merge
64
+ # queue entry has its own group. Most push runs then reuse the queue verdict through the receipt step.
60
65
  concurrency:
61
- group: gate-${{ github.event.pull_request.number || (github.event_name == 'push' && github.sha) || github.ref }}
62
- cancel-in-progress: true
66
+ group: gate-${{ github.event.pull_request.number || github.event.merge_group.head_ref || (github.event_name == 'push' && format('push-{0}', github.ref)) || github.ref }}
67
+ cancel-in-progress: ${{ github.event_name == 'pull_request' }}
63
68
 
64
69
  permissions:
65
- actions: read # #8206: exact-SHA development workflow verdict
70
+ actions: read # #8206 / org CI H1: exact-SHA verdict receipt reads workflow runs and jobs
66
71
  contents: read
67
72
  pull-requests: read # #8343: source commit declarations omitted by queue squashes
68
73
  # MMI-Hub#7542: the product image build below reads org private packages with the workflow's
@@ -78,34 +83,7 @@ jobs:
78
83
  runs-on: ubuntu-latest # #9248: included GitHub-hosted capacity, first choice for CI.
79
84
  defaults:
80
85
  run: { working-directory: {{GATE_WORKDIR}} }{{GATE_SERVICES_YAML}}
81
- steps:
82
- # #8206: keep a fresh successful tag gate; promote the exact development verdict, not a ref.
83
- - name: Reuse development gate for rc tag
84
- id: development-gate
85
- uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7
86
- with:
87
- script: |
88
- core.setOutput('reuse', 'false');
89
- if (context.eventName !== 'push' || !/^refs\/tags\/v.+-rc\.\d+$/.test(context.ref) || !/^[0-9a-f]{40}$/.test(context.sha)) return;
90
- try {
91
- const { data: current } = await github.rest.actions.getWorkflowRun({ ...context.repo, run_id: context.runId });
92
- const { data } = await github.rest.actions.listWorkflowRuns({
93
- ...context.repo, workflow_id: current.workflow_id, branch: 'development',
94
- event: 'push', head_sha: context.sha, per_page: 100
95
- });
96
- // API returns newest first: a newer red/pending rerun must not reuse an older green.
97
- const run = data.workflow_runs[0];
98
- if (!run || run.head_sha !== context.sha || run.head_branch !== 'development' ||
99
- run.event !== 'push' || run.status !== 'completed' || run.conclusion !== 'success') return;
100
- const jobs = await github.paginate(github.rest.actions.listJobsForWorkflowRun, {
101
- ...context.repo, run_id: run.id, filter: 'latest', per_page: 100
102
- });
103
- if (!jobs.some(job => job.name === 'gate' && job.status === 'completed' && job.conclusion === 'success')) return;
104
- core.setOutput('reuse', 'true');
105
- core.info('Reusing successful development gate run ' + run.id + ' for exact SHA ' + context.sha);
106
- } catch (error) {
107
- core.warning('Development gate proof unavailable; running normal gate: ' + error.message);
108
- }
86
+ steps:{{GATE_VERDICT_STEP_YAML}}
109
87
  - if: ${{ steps.development-gate.outputs.reuse != 'true' }}
110
88
  uses: mutmutco/MMI-Hub/.github/actions/runner-checkout@{{GATE_RUNNER_SHA}}
111
89
  with:
@@ -7,10 +7,10 @@ on:
7
7
  branches: {{GATE_PUSH_BRANCHES_YAML}}
8
8
  tags: ['v*']
9
9
  concurrency:
10
- group: gate-${{ github.event.pull_request.number || (github.event_name == 'push' && github.sha) || github.ref }}
11
- cancel-in-progress: true
10
+ group: gate-${{ github.event.pull_request.number || github.event.merge_group.head_ref || (github.event_name == 'push' && format('push-{0}', github.ref)) || github.ref }}
11
+ cancel-in-progress: ${{ github.event_name == 'pull_request' }}
12
12
  permissions:
13
- actions: read # #8206: exact-SHA development workflow verdict
13
+ actions: read # #8206 / org CI H1: exact-SHA verdict receipt reads workflow runs and jobs
14
14
  contents: read
15
15
  pull-requests: read # #8343: source commit declarations omitted by queue squashes
16
16
  packages: read
@@ -23,34 +23,7 @@ jobs:
23
23
  # larger/paid images, GPU and custom runner groups stay refused.
24
24
  runs-on: ubuntu-latest
25
25
  timeout-minutes: 10
26
- steps:
27
- # #8206: keep a fresh successful tag gate; promote the exact development verdict, not a ref.
28
- - name: Reuse development gate for rc tag
29
- id: development-gate
30
- uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7
31
- with:
32
- script: |
33
- core.setOutput('reuse', 'false');
34
- if (context.eventName !== 'push' || !/^refs\/tags\/v.+-rc\.\d+$/.test(context.ref) || !/^[0-9a-f]{40}$/.test(context.sha)) return;
35
- try {
36
- const { data: current } = await github.rest.actions.getWorkflowRun({ ...context.repo, run_id: context.runId });
37
- const { data } = await github.rest.actions.listWorkflowRuns({
38
- ...context.repo, workflow_id: current.workflow_id, branch: 'development',
39
- event: 'push', head_sha: context.sha, per_page: 100
40
- });
41
- // API returns newest first: a newer red/pending rerun must not reuse an older green.
42
- const run = data.workflow_runs[0];
43
- if (!run || run.head_sha !== context.sha || run.head_branch !== 'development' ||
44
- run.event !== 'push' || run.status !== 'completed' || run.conclusion !== 'success') return;
45
- const jobs = await github.paginate(github.rest.actions.listJobsForWorkflowRun, {
46
- ...context.repo, run_id: run.id, filter: 'latest', per_page: 100
47
- });
48
- if (!jobs.some(job => job.name === 'gate' && job.status === 'completed' && job.conclusion === 'success')) return;
49
- core.setOutput('reuse', 'true');
50
- core.info('Reusing successful development gate run ' + run.id + ' for exact SHA ' + context.sha);
51
- } catch (error) {
52
- core.warning('Development gate proof unavailable; running normal gate: ' + error.message);
53
- }
26
+ steps:{{GATE_VERDICT_STEP_YAML}}
54
27
  - if: ${{ steps.development-gate.outputs.reuse != 'true' }}
55
28
  uses: mutmutco/MMI-Hub/.github/actions/runner-checkout@{{GATE_RUNNER_SHA}}
56
29
  with:
@@ -56,7 +56,12 @@ are recorded per worktree, so a receipt from another tree does not clear the gua
56
56
  a lane root or sibling worktree (use `git -C` / `npm --prefix` instead, #3187). A historical main-based
57
57
  hotfix worktree without test-policy.json chains
58
58
  `mmi-cli tests policy --json --base origin/main --policy-ref <current origin/development commit> && <focused test>`
59
- in one command (#3243). Complete the documentation preflight below before pushing.
59
+ in one command (#3243). A lane diff is only readable from revisions the task worktree actually has (#9627):
60
+ take the head from `HEAD` or `origin/<base>`, or prove the sha first with
61
+ `git rev-parse --verify <sha>^{commit}` (fetching that commit when it is absent), and never gate the
62
+ `mmi-cli tests policy --base <comparison-base> && <focused test>` chain on an unverified short sha — `git` exits 128 there, so the
63
+ `&&` short-circuits and the policy run is silently skipped while the receipt looks missing rather than failed.
64
+ Complete the documentation preflight below before pushing.
60
65
  Open a PR through `mmi-cli devops pr create` with a closing issue link, and land through
61
66
  `mmi-cli devops pr land`. Verify required checks, merge, issue closure, and cleanup before calling
62
67
  the implementation complete. A merged implementation is not a production release.