@mutmutco/codex-plugin 3.139.1 → 3.139.3

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": "3.139.1",
3
+ "version": "3.139.3",
4
4
  "mmiCompat": "3.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": "3.139.1",
3
+ "version": "3.139.3",
4
4
  "description": "MMI workflow skills and org gates delivery.",
5
5
  "author": {
6
6
  "name": "MMI Future",
@@ -22,7 +22,11 @@ name: gate
22
22
  # GATE_FULL_RUN_BRANCH — train branch whose PUSHES run the full gate job (development on full/direct;
23
23
  # main on trunk). `main` is ALWAYS included in the job `if:` below so a required-
24
24
  # checks ruleset on main cannot be silently skipped by a future bootstrap (#4113).
25
+ # GATE_WINDOWS_COMPAT — `true` opts the repo into the informational windows-latest compat job
26
+ # (#5113: registry gate={"windowsCompat":true} or --var). Default OFF: Windows
27
+ # minutes cost more than Linux and the required gate stays the Linux lane.
25
28
  # GATE_BUDGET_SHA is rendered by the CLI from its blessed run-with-budget pin — not an operator knob.
29
+ # GATE_WINDOWS_COMPAT_JOB_YAML is rendered by the CLI from the final layered vars — not an operator knob.
26
30
  # (seed touch: keep kilo mirror + BOM digests in lockstep after classifier land.)
27
31
  on:
28
32
  pull_request:
@@ -55,6 +59,28 @@ jobs:
55
59
  run: { working-directory: {{GATE_WORKDIR}} }
56
60
  steps:
57
61
  - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
62
+ # MMI-Hub#5111: Windows CRLF in tracked shell scripts breaks Linux runners before the real
63
+ # check can explain it. Inspect only tracked files before install; .gitattributes is the fix.
64
+ - name: Line-ending guard
65
+ shell: bash
66
+ run: |
67
+ offenders=$(mktemp)
68
+ trap 'rm -f "$offenders"' EXIT
69
+ {
70
+ git grep -Il $'\r' -- '*.sh' || true
71
+ git grep -Il '^#!' | while IFS= read -r path; do
72
+ case "$path" in
73
+ *.sh) ;;
74
+ *) git grep -Il $'\r' -- "$path" || true ;;
75
+ esac
76
+ done
77
+ } | sort -u > "$offenders"
78
+ if [[ -s "$offenders" ]]; then
79
+ while IFS= read -r path; do
80
+ echo "::error title=Line-ending guard::CR byte in tracked script: $path. Run git add --renormalize . with this repo's .gitattributes."
81
+ done < "$offenders"
82
+ exit 1
83
+ fi
58
84
  - if: ${{ '{{GATE_RUNTIME}}' == 'node' }}
59
85
  uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
60
86
  with: { node-version: 24, cache: npm, cache-dependency-path: {{GATE_CACHE_DEP_PATH}} }
@@ -83,3 +109,4 @@ jobs:
83
109
  command: {{GATE_CMD}}
84
110
  max-seconds: {{GATE_MAX_SECONDS}}
85
111
  working-directory: {{GATE_WORKDIR}}
112
+ {{GATE_WINDOWS_COMPAT_JOB_YAML}}
@@ -0,0 +1,6 @@
1
+ # Canonical line endings for cross-platform development and Linux CI.
2
+ * text=auto eol=lf
3
+ *.sh text eol=lf
4
+ *.snap text eol=lf
5
+ *.cmd text eol=crlf
6
+ *.bat text eol=crlf
@@ -11,6 +11,7 @@
11
11
  { "target": ".github/workflows/agent-pr.yml", "source": "self", "ownership": "org", "classes": ["deployable"], "waivers": { "jerv-jervcode": "pins this workflow's EXACT step shapes in its own scripts/workflow-boundary-core.mjs — a literal repositories: Jerv-JervCode token scope, and whole-step equality for the surface and verdict legs. #4040 widened the org seed to the same hardened boundary (pull_request_target off the trusted base, an immutable BASE..HEAD compare with a file-count equality wall, a per-repo App token scope, and a certified-head merge), so the two now agree on substance. They cannot agree on bytes: a seed serving 16 repos resolves its token scope and its required contexts at run time, which exact-step equality rejects by construction. The waiver is permanent by design, not a deferral — lifting it would mean weakening the strictest repo to match a fleet file." } },
12
12
  { "target": ".github/rulesets/mmi-product-required-checks.json", "source": "seed:mmi-product-required-checks.template.json", "ownership": "org", "classes": ["deployable"] },
13
13
  { "target": ".gitignore", "source": "managed-block", "ownership": "org", "classes": ["deployable", "content"] },
14
+ { "target": ".gitattributes", "source": "seed:gitattributes.template", "ownership": "repo", "classes": ["deployable", "content"] },
14
15
  { "target": "README.md", "source": "seed:README.template.md", "ownership": "repo", "classes": ["deployable", "content"], "managedBlock": { "source": "seed:readme-mmi-developer-environment.block.md", "begin": "<!-- mmi-developer-environment:start -->", "end": "<!-- mmi-developer-environment:end -->" } },
15
16
  { "target": "architecture.md", "source": "seed:architecture.template.md", "ownership": "repo", "classes": ["deployable", "content"] },
16
17
  { "target": "docs/decisions/README.md", "source": "seed:decisions-readme.template.md", "ownership": "repo", "classes": ["deployable", "content"] },
@@ -74,6 +74,12 @@ mmi-cli oracle issue create --type task --batch tmp/epic-children.json --surface
74
74
  placeholder. It prints per-row `{number,url}` results and fails loud on any misfire. Add
75
75
  `--idempotency-key <key>` when a retried loop must not duplicate.
76
76
 
77
+ When creating through `mmi-cli vault secrets use GH_TOKEN -- …`, the `GH_TOKEN` environment override can
78
+ disrupt Hub session discovery and print `board attach skipped — no Hub session token` for batch rows. That
79
+ warning can appear when placement is correct, but it is not harmless or proof of placement: final verification
80
+ must prove every intended child is linked and on the board as Todo with `mmi-cli oracle issue children
81
+ <owner/repo#N> --json`.
82
+
77
83
  The idempotency lookup is find-before-create, not an atomic reservation. Run one batch writer at a time:
78
84
  never submit concurrent creates with the same key. Size the calling command's wall-clock budget for the
79
85
  whole sequential batch. If the command times out, its outcome is unknown — confirm the process has ended,
@@ -82,10 +88,11 @@ wait for writes to quiesce, inspect the children, then retry the missing rows wi
82
88
  ## Step 3 — confirm the tree
83
89
 
84
90
  ```bash
85
- mmi-cli oracle issue children <owner/repo#N> # each child: number/title/state/repo/boardStatus/linkedPrs
91
+ mmi-cli oracle issue children <owner/repo#N> --json # each child: number/title/state/repo/assignee/boardStatus/linkedPrs
86
92
  ```
87
93
 
88
- Verify every intended child is linked and on the board as Todo. To link a child that already existed (not
94
+ This JSON is the final placement authority: verify every intended child is linked and on the board as Todo.
95
+ If it does not prove that placement, investigate and correct the misfire. To link a child that already existed (not
89
96
  part of the batch), use the inverse-friendly single link:
90
97
 
91
98
  ```bash