@mutmutco/codex-plugin 4.3.19 → 4.3.21
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
|
@@ -366,13 +366,9 @@ 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)
|
|
370
369
|
with `--var GATE_MAX_SECONDS=` (300s onboarding default — tighten once the gate is measured, via
|
|
371
370
|
`--var` or `org project set <repo> --var gate={"maxSeconds":N}`); `ci audit` and the release train
|
|
372
|
-
both enforce the step, so do not remove it.
|
|
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
|
|
371
|
+
both enforce the step, so do not remove it. Every trigger runs the full `GATE_CMD`. `bootstrap apply --execute` installs that JSON as the
|
|
376
372
|
repository ruleset itself (#6070) and reports one `product-ruleset` row: `PARK` (the gate file is not on
|
|
377
373
|
the base branch yet — installed disabled), `WAIT` (the gate exists but has not emitted a proven-green
|
|
378
374
|
`gate` context — kept disabled; re-run apply after the gate passes), `ACTIVATE` (gate green — enforcement
|
|
@@ -381,13 +377,11 @@ collaborator list + the per-branch allowlist are the record — no separate rost
|
|
|
381
377
|
$OWNER/$REPO` remains the supported fallback; confirm `product required-check ruleset enforcement active`
|
|
382
378
|
with `bootstrap verify` before reporting bootstrap complete. MMI-Hub keeps its own three-job gate
|
|
383
379
|
(`cli`/`infra`/`docs`) — never apply the product ruleset there.
|
|
384
|
-
- **The ruleset
|
|
385
|
-
`strict_required_status_checks_policy:
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
branch`. `pr merge` / `pr land` update a BEHIND head from the base with a merge commit and re-wait once —
|
|
390
|
-
see `docs/Guides/train-troubleshooting.md#head-behind-base`.
|
|
380
|
+
- **The committed ruleset owns its up-to-date policy.** New repositories default to
|
|
381
|
+
`strict_required_status_checks_policy: false`. Bootstrap and CI reconciliation preserve that policy
|
|
382
|
+
when updating contexts, and converge the live ruleset to the committed setting. Repositories may
|
|
383
|
+
explicitly require an up-to-date head. `pr merge` / `pr land` still update a BEHIND head from the base
|
|
384
|
+
with a merge commit and re-wait once — see `docs/Guides/train-troubleshooting.md#head-behind-base`.
|
|
391
385
|
- **A brand-new repo cannot pass the gate you just installed — its first commit must carry a real project
|
|
392
386
|
(#2928).** The seeded `gate.yml` runs `GATE_INSTALL_CMD` + `GATE_CMD` (`npm ci` + `npm run check` by
|
|
393
387
|
default) **unconditionally**. An empty repo has no `package.json`, so the gate **fails on the seed PR
|
|
@@ -1,9 +1,6 @@
|
|
|
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).
|
|
7
4
|
#
|
|
8
5
|
# Runner: self-hosted mmi-runner (mmi-live) — see docs/Guides/gh-runner-runbook.md in MMI-Hub.
|
|
9
6
|
# #4118: if GATE_CMD runs tsgo or other memory-heavy typecheck / browser work, pin this job to
|
|
@@ -14,9 +11,6 @@ name: gate
|
|
|
14
11
|
# bootstrap with --var):
|
|
15
12
|
# GATE_RUNTIME — node | python (selects which setup step fires)
|
|
16
13
|
# 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}})
|
|
20
14
|
# GATE_INSTALL_CMD — the dependency-install command ({{GATE_INSTALL_CMD}})
|
|
21
15
|
# GATE_WORKDIR — app working directory when not the repo root ({{GATE_WORKDIR}})
|
|
22
16
|
# GATE_CACHE_DEP_PATH— npm lockfile path for runner-checkout heal ({{GATE_CACHE_DEP_PATH}})
|
|
@@ -28,27 +22,18 @@ name: gate
|
|
|
28
22
|
# GATE_FULL_RUN_BRANCH — train branch whose PUSHES run the full gate job (development on full/direct;
|
|
29
23
|
# main on trunk). `main` is ALWAYS included in the job `if:` below so a required-
|
|
30
24
|
# checks ruleset on main cannot be silently skipped by a future bootstrap (#4113).
|
|
31
|
-
# GATE_BUDGET_SHA is rendered by the CLI from its blessed run-with-budget pin — not an operator knob.
|
|
32
|
-
# also pins zeroci-verify (MMI-Hub#6253): both actions ship from the same Hub commit.
|
|
25
|
+
# GATE_BUDGET_SHA is rendered by the CLI from its blessed run-with-budget pin — not an operator knob.
|
|
33
26
|
# GATE_RUNNER_SHA pins the org runner-checkout / runner-node-toolchain actions (#5610).
|
|
34
27
|
# Estate policy 2026-08-23: GitHub-hosted Windows (`windows-latest` / windows-*) is forbidden org-wide.
|
|
35
28
|
# Do not add a windows-compat (or any other) job that runs-on GH-hosted Windows. Linux self-hosted
|
|
36
29
|
# (mmi-live / mmi-heavy) is the only CI merge gate. Rare Windows proof stays on the owner's machine or
|
|
37
30
|
# a future self-hosted Windows runner — never windows-latest.
|
|
38
31
|
# (seed touch: keep BOM digests in lockstep after classifier land.)
|
|
39
|
-
# harbour: unmanaged
|
|
40
|
-
# The nightly `schedule` cron below is GitHub's own clock by design (docs/schedules.md rule 5, #6270): it is
|
|
41
|
-
# the drift catcher for the PR gate (#6254), a required-check workflow that must not become a SCHEDULE# row
|
|
42
|
-
# armed and dispatched by the plane it otherwise never touches — the merge gate stays decoupled from the
|
|
43
|
-
# schedule plane, exactly as the deadman is.
|
|
44
32
|
on:
|
|
45
33
|
pull_request:
|
|
46
34
|
push:
|
|
47
35
|
branches: {{GATE_PUSH_BRANCHES_YAML}}
|
|
48
36
|
tags: ['v*']
|
|
49
|
-
# #6254: nightly full run on the default branch — catches affected-only drift and stale receipts.
|
|
50
|
-
schedule:
|
|
51
|
-
- cron: '17 3 * * *'
|
|
52
37
|
|
|
53
38
|
env:
|
|
54
39
|
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true
|
|
@@ -63,8 +48,6 @@ concurrency:
|
|
|
63
48
|
|
|
64
49
|
permissions:
|
|
65
50
|
contents: read
|
|
66
|
-
# MMI-Hub#6253: ZeroCI receipts are commit statuses on the PR head; the gate reads them, never writes them.
|
|
67
|
-
statuses: read
|
|
68
51
|
|
|
69
52
|
jobs:
|
|
70
53
|
gate:
|
|
@@ -132,31 +115,10 @@ jobs:
|
|
|
132
115
|
if: ${{ '{{GATE_RUNTIME}}' == 'python' }}
|
|
133
116
|
run: |
|
|
134
117
|
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; }
|
|
135
|
-
# MMI-Hub#6253 ZeroCI: skip the install and the budgeted run when a trusted seat already ran this
|
|
136
|
-
# exact command on this exact tree (receipt = commit status zeroci/<command> on the PR head). It
|
|
137
|
-
# needs only git and gh, so it sits before the install. Only `verified=true` skips;
|
|
138
|
-
# absent/stale/unreadable fall through to the install and the budgeted run below.
|
|
139
|
-
- id: zeroci
|
|
140
|
-
uses: mutmutco/MMI-Hub/.github/actions/zeroci-verify@{{GATE_BUDGET_SHA}}
|
|
141
|
-
with:
|
|
142
|
-
command: {{GATE_CMD}}
|
|
143
|
-
working-directory: {{GATE_WORKDIR}}
|
|
144
|
-
head-sha: ${{ github.event.pull_request.head.sha || github.sha }}
|
|
145
118
|
- run: {{GATE_INSTALL_CMD}}
|
|
146
|
-
if: ${{ steps.zeroci.outputs.verified != 'true' || github.event_name == 'schedule' }}
|
|
147
119
|
# #3178: the check runs under the org wall-clock budget — a hung suite dies at the ceiling instead
|
|
148
120
|
# of squatting a runner lane for GitHub's 6h default. ci-audit + the release train enforce this step.
|
|
149
|
-
|
|
150
|
-
# equal to GATE_CMD until the knob is set); every other trigger runs the full GATE_CMD. The nightly
|
|
151
|
-
# schedule runs even when the zeroci receipt already proves the tree — that is its whole point.
|
|
152
|
-
- if: ${{ steps.zeroci.outputs.verified != 'true' && github.event_name == 'pull_request' }}
|
|
153
|
-
uses: mutmutco/MMI-Hub/.github/actions/run-with-budget@{{GATE_BUDGET_SHA}}
|
|
154
|
-
with:
|
|
155
|
-
command: {{GATE_AFFECTED_CMD}}
|
|
156
|
-
max-seconds: {{GATE_MAX_SECONDS}}
|
|
157
|
-
working-directory: {{GATE_WORKDIR}}
|
|
158
|
-
- if: ${{ github.event_name != 'pull_request' && (steps.zeroci.outputs.verified != 'true' || github.event_name == 'schedule') }}
|
|
159
|
-
uses: mutmutco/MMI-Hub/.github/actions/run-with-budget@{{GATE_BUDGET_SHA}}
|
|
121
|
+
- uses: mutmutco/MMI-Hub/.github/actions/run-with-budget@{{GATE_BUDGET_SHA}}
|
|
160
122
|
with:
|
|
161
123
|
command: {{GATE_CMD}}
|
|
162
124
|
max-seconds: {{GATE_MAX_SECONDS}}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"_comment": "Repository-level ruleset requiring the product gate job (#1333). Apply via GitHub repo rulesets (master-admin) after bootstrap seeds gate.yml — the job name gate must match this context.
|
|
2
|
+
"_comment": "Repository-level ruleset requiring the product gate job (#1333). Apply via GitHub repo rulesets (master-admin) after bootstrap seeds gate.yml — the job name gate must match this context.",
|
|
3
3
|
"name": "mmi-product-required-checks",
|
|
4
4
|
"target": "branch",
|
|
5
5
|
"enforcement": "active",
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
{
|
|
14
14
|
"type": "required_status_checks",
|
|
15
15
|
"parameters": {
|
|
16
|
-
"strict_required_status_checks_policy":
|
|
16
|
+
"strict_required_status_checks_policy": false,
|
|
17
17
|
"required_status_checks": [
|
|
18
18
|
{ "context": "gate" }
|
|
19
19
|
]
|