@mutmutco/kilo-plugin 3.94.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.94.0",
3
+ "version": "3.95.0",
4
4
  "description": "MMI workflow skills and org gates delivery.",
5
5
  "author": {
6
6
  "name": "MMI Future",
@@ -413,11 +413,11 @@ collaborator list + the per-branch allowlist are the record — no separate rost
413
413
  Step-0 axes (class, project-type, deploy-model). Do **not** write the release track, board number, or deploy
414
414
  coords as a value — the templates point at `mmi-cli org project get` (registry SSOT, never copied, so it cannot drift).
415
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).
416
- - **`docs/index.md` is generated by `bootstrap apply`, once (#3545).** The seeded README's first agent
417
- instruction is to read it, so it exists from the first commit and `bootstrap verify` requires it. Apply
418
- **creates** it and never rewrites it: apply sees the seed list, not the tree, so regenerating an index in a
419
- repo that has since added its own docs would silently drop every hand-authored entry. Once the repo has
420
- 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*.
421
421
  - **Push the mandated fill past the active ruleset (#1807).** Deployable repos activate
422
422
  `mmi-product-required-checks` during apply (its `bypass_actors` is empty by design), so the `gate` check is
423
423
  required on `development`/`main` before the seeded README + architecture have ever produced a green run. The
@@ -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: