@mutmutco/codex-plugin 4.3.16 → 4.3.18

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.16",
3
+ "version": "4.3.18",
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.16",
3
+ "version": "4.3.18",
4
4
  "description": "MMI workflow skills and org gates delivery.",
5
5
  "author": {
6
6
  "name": "MMI Future",
@@ -381,6 +381,13 @@ collaborator list + the per-branch allowlist are the record — no separate rost
381
381
  $OWNER/$REPO` remains the supported fallback; confirm `product required-check ruleset enforcement active`
382
382
  with `bootstrap verify` before reporting bootstrap complete. MMI-Hub keeps its own three-job gate
383
383
  (`cli`/`infra`/`docs`) — never apply the product ruleset there.
384
+ - **The ruleset requires an up-to-date head (#6263)** — the seeded reference sets
385
+ `strict_required_status_checks_policy: true` ("require branches to be up to date before merging"), so the
386
+ last of several parallel landings re-tests on the real combination instead of a base that lacked the
387
+ others (Jerv-JervCode#4289). `bootstrap apply --execute` and `ci reconcile --apply` re-PUT an existing
388
+ non-strict ruleset; `bootstrap verify` reports it as `product required-check ruleset requires an up-to-date
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`.
384
391
  - **A brand-new repo cannot pass the gate you just installed — its first commit must carry a real project
385
392
  (#2928).** The seeded `gate.yml` runs `GATE_INSTALL_CMD` + `GATE_CMD` (`npm ci` + `npm run check` by
386
393
  default) **unconditionally**. An empty repo has no `package.json`, so the gate **fails on the seed PR
@@ -438,18 +445,6 @@ collaborator list + the per-branch allowlist are the record — no separate rost
438
445
  - **`docs/index.md` is an optional generated routing index (#3545).** Apply may create `docs/index.md` once for link routing; it never rewrites it. Once the repo has docs of its own,
439
446
  `mmi-cli oracle docs index --write` owns the routing artifact and `--check` gates drift — it is not product
440
447
  current-state SSOT. Decision records under `docs/decisions/` remain append-only *why*.
441
- - **Push the mandated fill past the active ruleset (#1807).** Deployable repos activate
442
- `mmi-product-required-checks` during apply (its `bypass_actors` is empty by design), so the `gate` check is
443
- required on `development`/`main` before the seeded README + architecture have ever produced a green run. The
444
- fill above (#1520) then cannot be pushed, and not even `gh pr merge --admin` clears it (GH013 on push /
445
- GraphQL rule violation on admin-merge). Sanctioned final step: in GitHub Settings > Rules > Rulesets >
446
- `mmi-product-required-checks`, set **Enforcement** to **Disabled**, push/merge the filled `README.md` +
447
- `architecture.md`, then set **Enforcement** back to **Active**. Programmatic equivalent: PUT the ruleset
448
- with `enforcement: disabled` (a PATCH is rejected, #917/#922), push the fill, then PUT it back to
449
- `active` (or re-run `mmi-cli devops ci reconcile --apply --repo $OWNER/$REPO` once the gate is green, which
450
- should activate idempotently). Before reporting bootstrap complete, run `mmi-cli devops bootstrap verify` and
451
- confirm `product required-check ruleset enforcement active` is OK — a parked ruleset is not done. Never
452
- leave enforcement disabled.
453
448
  - `.claude/settings.local.json` is local-only and gitignored; bootstrap seeds no committed `.claude/settings.json`.
454
449
  - **No agent guide is committed — none, anywhere (#2921).** `mmi-no-agent-files-org` is active with no bypass
455
450
  and restricts `AGENTS.md`, `CLAUDE.md`, `GEMINI.md`, `.claude/**`, `.codex/**`, `.agents/**` **and
@@ -36,6 +36,11 @@ name: gate
36
36
  # (mmi-live / mmi-heavy) is the only CI merge gate. Rare Windows proof stays on the owner's machine or
37
37
  # a future self-hosted Windows runner — never windows-latest.
38
38
  # (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.
39
44
  on:
40
45
  pull_request:
41
46
  push:
@@ -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. strict_required_status_checks_policy=true (#6263): the head must be up to date with the base before merging, so the last of several parallel landings re-tests on the real combination.",
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": false,
16
+ "strict_required_status_checks_policy": true,
17
17
  "required_status_checks": [
18
18
  { "context": "gate" }
19
19
  ]
@@ -42,10 +42,9 @@ mmi-cli devops hotfix start --from <pr|sha>[,<pr|sha>…] --json --out "$r1"
42
42
 
43
43
  `hotfix start` derives the PATCH from the latest Release tag on `origin/main`, branches `hotfix/vX.Y.Z` from `origin/main`, cherry-picks with `-x`, folds the version, pushes, and opens the main-base PR with its carries marker. Never duplicate those steps with raw branch, cherry-pick or PR commands.
44
44
 
45
- 2. Verify the main-base PR: the repo's local gate on the hotfix branch, the independent review the active agent doctrine requires, and the original issue's acceptance criteria. Then wait for required CI and merge through Hub the PR may squash, and the `-x` trailer must survive in the squash message:
45
+ 2. Verify the main-base PR: the repo's local gate on the hotfix branch, the independent review the active agent doctrine requires, and the original issue's acceptance criteria. Then merge through Hub — it waits for required CI and demands the review verdict itself; the PR may squash, and the `-x` trailer must survive in the squash message:
46
46
 
47
47
  ```bash
48
- mmi-cli devops pr checks-wait <number>
49
48
  mmi-cli devops pr merge <number> --squash
50
49
  ```
51
50