@mutmutco/kilo-plugin 3.93.0 → 3.95.0

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/kilo-plugin",
3
- "version": "3.93.0",
3
+ "version": "3.95.0",
4
4
  "description": "MMI workflow skills and org gates delivery.",
5
5
  "author": {
6
6
  "name": "MMI Future",
@@ -355,8 +355,11 @@ collaborator list + the per-branch allowlist are the record — no separate rost
355
355
  `--var` or `org project set <repo> --var gate={"maxSeconds":N}`); `ci audit` and the release train
356
356
  both enforce the step, so do not remove it. After apply,
357
357
  master-admin must **activate** that JSON as a repository ruleset (GitHub → Settings → Rules → Rulesets →
358
- Import/create from the committed reference) so the `gate` context is required on train branches. MMI-Hub
359
- keeps its own three-job gate (`cli`/`infra`/`docs`) never apply the product ruleset there.
358
+ Import/create from the committed reference) so the `gate` context is required on train branches. Once the
359
+ gate is green on `development`, `mmi-cli ci reconcile --apply --repo $OWNER/$REPO` should flip enforcement
360
+ to **Active**; if it does not, use the Step 5 PUT fallback and confirm with `bootstrap verify` before
361
+ reporting bootstrap complete. MMI-Hub keeps its own three-job gate (`cli`/`infra`/`docs`) — never apply the
362
+ product ruleset there.
360
363
  - **A brand-new repo cannot pass the gate you just installed — its first commit must carry a real project
361
364
  (#2928).** The seeded `gate.yml` runs `GATE_INSTALL_CMD` + `GATE_CMD` (`npm ci` + `npm run check` by
362
365
  default) **unconditionally**. An empty repo has no `package.json`, so the gate **fails on the seed PR
@@ -410,11 +413,11 @@ collaborator list + the per-branch allowlist are the record — no separate rost
410
413
  Step-0 axes (class, project-type, deploy-model). Do **not** write the release track, board number, or deploy
411
414
  coords as a value — the templates point at `mmi-cli org project get` (registry SSOT, never copied, so it cannot drift).
412
415
  Do not write `AGENTS.md` / `CLAUDE.md` — these are developer-owned, gitignored agent guides, never a bootstrapped repo file (the `mmi-no-agent-files-org` ruleset blocks committing them).
413
- - **`docs/index.md` is generated by `bootstrap apply`, once (#3545).** The seeded README's first agent
414
- instruction is to read it, so it exists from the first commit and `bootstrap verify` requires it. Apply
415
- **creates** it and never rewrites it: apply sees the seed list, not the tree, so regenerating an index in a
416
- repo that has since added its own docs would silently drop every hand-authored entry. Once the repo has
417
- docs of its own, `mmi-cli docs index --write` owns it — that reads the whole tree, and `--check` gates drift.
416
+ - **`docs/index.md` is an optional generated routing index (#3545 / Hub#4133).** Agent entrypoints prefer
417
+ `mmi-cli repo-index search` + compute-at-read CLI over living prose under `docs/`. Apply may still create
418
+ `docs/index.md` once for link routing; it never rewrites it. Once the repo has docs of its own,
419
+ `mmi-cli docs index --write` owns the routing artifact and `--check` gates drift it is not product
420
+ current-state SSOT. Decision records under `docs/decisions/` remain append-only *why*.
418
421
  - **Push the mandated fill past the active ruleset (#1807).** Deployable repos activate
419
422
  `mmi-product-required-checks` during apply (its `bypass_actors` is empty by design), so the `gate` check is
420
423
  required on `development`/`main` before the seeded README + architecture have ever produced a green run. The
@@ -423,8 +426,10 @@ collaborator list + the per-branch allowlist are the record — no separate rost
423
426
  `mmi-product-required-checks`, set **Enforcement** to **Disabled**, push/merge the filled `README.md` +
424
427
  `architecture.md`, then set **Enforcement** back to **Active**. Programmatic equivalent: PUT the ruleset
425
428
  with `enforcement: disabled` (a PATCH is rejected, #917/#922), push the fill, then PUT it back to
426
- `active` (or re-run `bootstrap apply`, which re-activates the ruleset idempotently). Never leave enforcement
427
- disabled.
429
+ `active` (or re-run `mmi-cli ci reconcile --apply --repo $OWNER/$REPO` once the gate is green, which
430
+ should activate idempotently). Before reporting bootstrap complete, run `mmi-cli bootstrap verify` and
431
+ confirm `product required-check ruleset enforcement active` is OK — a parked ruleset is not done. Never
432
+ leave enforcement disabled.
428
433
  - `.claude/settings.local.json` is local-only and gitignored; bootstrap seeds no committed `.claude/settings.json`.
429
434
  - **No agent guide is committed — none, anywhere (#2921).** `mmi-no-agent-files-org` is active with no bypass
430
435
  and restricts `AGENTS.md`, `CLAUDE.md`, `GEMINI.md`, `.claude/**`, `.codex/**`, `.agents/**` **and
@@ -18,12 +18,13 @@ access runbook → [repo-access](https://github.com/mutmutco/MMI-Hub/blob/develo
18
18
 
19
19
  Read this section at the start of agent work in this repo.
20
20
 
21
- - **Docs entry point:** read `docs/index.md` firstthe generated routing index (`mmi-cli docs index
22
- --write`); `--check` gates drift, so it can never fall out of sync with the `docs/` tree.
21
+ - **Structure search:** `mmi-cli repo-index search <path|symbol|meaning>` Hub cloud pointer hits
22
+ (Hub#4133). Prefer this over inventing wiki pages or trusting stale inventories under `docs/`.
23
23
  - **Durable WHY:** `docs/decisions/` — one file per decision, prose only for what was chosen and
24
- rejected; never a description of current state.
25
- - **Current state:** code + `mmi-cli org project get` — release track, board, and deploy coords are
26
- registry facts, resolved live, never copied into a doc where they can go stale.
24
+ rejected; never a description of current state. Do not maintain living current-state under `docs/`.
25
+ - **Current state:** code + compute-at-read CLI (`mmi-cli org project get`, `board`, `status`,
26
+ `org schedules`, …) — registry facts, resolved live. Optional generated `docs/index.md` is a
27
+ **routing** index only (`mmi-cli docs index --check`), not product truth.
27
28
  - **GitHub wikis are retired org-wide** — this repo does not publish to a `.wiki.git`; do not create one.
28
29
  - **Stack:** (languages, frameworks, major services)
29
30
  - **Run locally:** (install, dev server, `/stage` if non-obvious)
@@ -3,6 +3,9 @@ name: gate
3
3
  # and v* tags so /release and /hotfix can discover required contexts on the tagged SHA.
4
4
  #
5
5
  # Runner: self-hosted mmi-runner (mmi-live) — see docs/Guides/gh-runner-runbook.md in MMI-Hub.
6
+ # #4118: if GATE_CMD runs tsgo or other memory-heavy typecheck / browser work, pin this job to
7
+ # runs-on: [self-hosted, linux, x64, mmi-heavy]
8
+ # instead — standard lanes are MemoryMax=1200M and will cgroup-OOM those workloads.
6
9
  # Stack-aware (#1550): the runtime is rendered into the setup-step `if:` — both the Node and Python
7
10
  # setup steps live in the file but only the one matching GATE_RUNTIME runs. Knobs (override at
8
11
  # bootstrap with --var):
@@ -14,7 +17,13 @@ name: gate
14
17
  # GATE_PY_VERSION — Python version for setup-python ({{GATE_PY_VERSION}})
15
18
  # GATE_MAX_SECONDS — run-with-budget wall-clock ceiling in seconds ({{GATE_MAX_SECONDS}}); 300 default,
16
19
  # tighten per repo (org project set --var gate={"maxSeconds":N}) once measured (#3178)
20
+ # GATE_PUSH_BRANCHES_YAML — YAML list of push branches that trigger the workflow file (rendered by
21
+ # bootstrap from the release track; not usually hand-passed)
22
+ # GATE_FULL_RUN_BRANCH — train branch whose PUSHES run the full gate job (development on full/direct;
23
+ # main on trunk). `main` is ALWAYS included in the job `if:` below so a required-
24
+ # checks ruleset on main cannot be silently skipped by a future bootstrap (#4113).
17
25
  # GATE_BUDGET_SHA is rendered by the CLI from its blessed run-with-budget pin — not an operator knob.
26
+ # (seed touch: keep kilo mirror + BOM digests in lockstep after classifier land.)
18
27
  on:
19
28
  pull_request:
20
29
  push:
@@ -37,7 +46,10 @@ permissions:
37
46
 
38
47
  jobs:
39
48
  gate:
40
- if: ${{ github.event_name != 'push' || github.ref_name == '{{GATE_FULL_RUN_BRANCH}}' || github.ref_type == 'tag' }}
49
+ # #4113: bake `main` into the template permanently. GATE_FULL_RUN_BRANCH selects the train push
50
+ # that runs the full job; main must never become skippable via bootstrap vars alone while the
51
+ # org ruleset still requires `gate` on main.
52
+ if: ${{ github.event_name != 'push' || github.ref_name == '{{GATE_FULL_RUN_BRANCH}}' || github.ref_name == 'main' || github.ref_type == 'tag' }}
41
53
  runs-on: [self-hosted, linux, x64, mmi-live]
42
54
  defaults:
43
55
  run: { working-directory: {{GATE_WORKDIR}} }
@@ -53,6 +53,20 @@ Close with one grounding line: gates green (or the one gate to fix), and the sin
53
53
  usually `mmi-cli board claim <n>` for the recommended item, or the readiness fix if a gate is red. Don't
54
54
  claim on the user's behalf; let them take the first item when ready.
55
55
 
56
+ ## Step 2b — structure door (compute-at-read)
57
+
58
+ Before treating `docs/**` as current-state, teach the Hub door (Hub#4133 / #4148):
59
+
60
+ ```bash
61
+ mmi-cli repo-index search <path-or-symbol-or-meaning> # Hub cloud pointers (default)
62
+ mmi-cli repo-index search "where …" --semantic # Titan meaning over embeddings
63
+ mmi-cli repo-index status --cloud # is the estate index live?
64
+ ```
65
+
66
+ Host indexes (Cursor / Kilo) stay local helpers; **Hub `repo-index` is the org SSOT structure door**.
67
+ Living current-state still comes from live verbs (`org schedules`, `board read`, …) — see
68
+ `docs/Architecture/compute-at-read.md`. Do not invent wiki prose from pointer hits.
69
+
56
70
  ## Notes
57
71
 
58
72
  - `/onboard` is the first-session, readiness-first wrapper. Once a repo is known-good, `/resume` is the
@@ -54,6 +54,20 @@ For the full board partition (yours / claimable / taken) run `/mmi`.
54
54
  Lead with one line: toolchain OK (or the heal to run), the branch + what's in flight, and the one next
55
55
  item with its claim command. Then stop. The user drives — claim, continue, or file when they say so.
56
56
 
57
+ ## Current-state doors (Hub#4120)
58
+
59
+ When answering “what is true now”, **ask the CLI**, not committed markdown inventories or weekly
60
+ janitor prose. Catalog: `docs/Architecture/compute-at-read.md` (in MMI-Hub).
61
+
62
+ | Ask | Verb |
63
+ | --- | --- |
64
+ | Schedules / harbour lanes | `mmi-cli org schedules` / `--json` |
65
+ | Boxes / IPs | `mmi-cli runtime box list` |
66
+ | Registry / projects | `mmi-cli org project list\|get` |
67
+ | Board | `mmi-cli board read` / `mmi-cli next` |
68
+ | Docs index freshness | `mmi-cli docs index --check` |
69
+ | Path / symbol / meaning pointers | `mmi-cli repo-index search <q>` (Hub cloud; `--semantic` optional) |
70
+
57
71
  ## Notes
58
72
 
59
73
  - `/resume` is read-only session orientation. It never claims, moves, or writes.
@@ -60,6 +60,13 @@ worktree, deletes the merged branch (local + origin), and prunes tracking refs.
60
60
  locked is queued and retried by `mmi-cli worktree gc sweep-deferred`. Self-authored merges need an explicit
61
61
  per-session merge grant — ask early if you don't have one.
62
62
 
63
+ **Cwd-safe land (#4140):** `worktree land --apply` (what `pr land` runs) is designed to be invoked from
64
+ inside the worktree you are landing. Before removal it releases the process cwd to the primary checkout
65
+ (#1444/#2747) — on Windows, leaving cwd inside the target tree makes `rmdir` fail with `EBUSY` and leaks
66
+ branch refs. You do not need to `cd` out first; if removal still fails (IDE lock, antivirus), the deferred
67
+ sweep retries from a safe cwd. Prefer the primary checkout cwd only when you are running `worktree land`
68
+ manually outside `pr land`.
69
+
63
70
  ## Step 5 — record + next
64
71
 
65
72
  Record durable decisions on the issue or PR, then check the board again: