@mutmutco/pi-plugin 4.6.11 → 4.6.13

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.11",
3
+ "version": "4.6.13",
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:
@@ -4,6 +4,10 @@ GitHub repository admins hold project-admin authority on their own projects with
4
4
  registry enrollment. Registry-listed admins with repository write access remain supported.
5
5
  Use `mmi-cli oracle org access role <owner/repo> --json` to verify authority for release,
6
6
  candidate, hotfix, and runtime operations. Organization membership role alone is not this check.
7
+ Verified repository writers (GitHub write, maintain or admin) may land PRs targeting `development`
8
+ on non-Hub repositories. `/train-authority` reports this separately as `developmentMerge`;
9
+ it does not grant release, candidate, hotfix or runtime train authority. MMI-Hub development
10
+ merges remain master-only.
7
11
  The Hub distribution train remains organization-master-only. It runs in the `hub-release` workflow on
8
12
  our self-hosted runners, dispatched by an org owner, never on a workstation (#9137).
9
13
  A 503 `github-rate-limited` answer means the org App's hourly GitHub allowance is used up. It is