@mutmutco/pi-plugin 4.6.34 → 4.6.36

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/pi-plugin",
3
- "version": "4.6.34",
3
+ "version": "4.6.36",
4
4
  "description": "MMI workflow skills and org gates delivery.",
5
5
  "author": {
6
6
  "name": "MMI Future",
@@ -20,12 +20,16 @@ One call; `--flat` gives one array of rows to iterate. A routine read already ex
20
20
  items, so no status post-filter is needed. The detailed form (`--json` without `--flat`) carries `viewer`,
21
21
  `repo` and the project title; use its `primary` for this repo and `secondary` for other repos on the
22
22
  Project. Without `--flat`, `board read --json` returns an object
23
- `{project, viewer, repo, primary, secondary, warnings, partial}` whose `primary` and `secondary` are bucket
24
- objects `{userOwned, claimable, taken, unownedInFlight}` of item arrays (no top-level `items` array), so filter
25
- a bucket (e.g. `report.primary.claimable`) or pass `--json --flat`, never `(j.items||j).filter`. Never sniff
26
- for the list (`j.items ?? j.rows ?? j`, `Object.values`, any generic "find the list" wrapper): it throws
27
- `items is not iterable` before any row is read. For a number|status|claim|title projection across non-Done
28
- rows, run `mmi-cli oracle board read --json --flat --out .jerv/tmp/board.json` and filter that array locally.
23
+ `{project, viewer, repo, primary, secondary, items, warnings, partial}` whose `primary` and `secondary` are bucket
24
+ objects `{userOwned, claimable, taken, unownedInFlight}` of item arrays, and whose top-level `items` (#9974) is
25
+ the flat row array — the same rows `--flat` prints — so a number|status|title projection can iterate
26
+ `report.items` without a second read. Filter a bucket (`report.primary.claimable`) when ownership context
27
+ matters, or `report.items` / `--json --flat` for a projection. Never sniff
28
+ for the list (`j.items ?? j.rows ?? j`, `Object.values`, any generic "find the list" wrapper): `j.rows` is not a
29
+ key, and on an older report it threw
30
+ `items is not iterable` before any row was read. For a number|status|claim|title projection across non-Done
31
+ rows, read `report.items` or run `mmi-cli oracle board read --json --flat --out .jerv/tmp/board.json` and filter
32
+ that array locally.
29
33
  `--flat` rows are `{ref,number,title,status,assignees,labels,bucket,claim,openPullRequests}` (`claim` is the
30
34
  parsed mmi-claim evidence object, null when unclaimed; `openPullRequests` lists the OPEN PRs whose
31
35
  closing-issue body links name the item — on the full JSON object that list lives at `report.pullRequests`,
@@ -21,9 +21,12 @@ rows to iterate. A routine read already excludes Done and closed items, so no st
21
21
  One call. The detailed form (`--json` without `--flat`) carries `viewer`, `repo` and the project title — do not spend extra calls on
22
22
  `gh api user` or `gh repo view`. Use `primary` for this repo and `secondary` for other repos on the same
23
23
  Project. Without `--flat`, `board read --json` returns an object
24
- `{project, viewer, repo, primary, secondary, warnings, partial}` whose `primary` and `secondary` are bucket
25
- objects `{userOwned, claimable, taken, unownedInFlight}` of item arrays (no top-level `items` array), so filter
26
- a bucket (e.g. `report.primary.claimable`) or pass `--json --flat`, never `(j.items||j).filter`. Partial reads
24
+ `{project, viewer, repo, primary, secondary, items, warnings, partial}` whose `primary` and `secondary` are bucket
25
+ objects `{userOwned, claimable, taken, unownedInFlight}` of item arrays, and whose top-level `items` (#9974) holds
26
+ the flat rows — exactly what `--flat` prints — so iterate `report.items` instead of spending a second read.
27
+ Filter a bucket (`report.primary.claimable`) when ownership context matters. Never sniff for the list
28
+ (`j.items ?? j.rows ?? j` is only coincidentally safe now, `Object.values` is not): `j.rows` is not a key.
29
+ Partial reads
27
30
  exit nonzero; pass `--allow-partial` only when the dev accepts an incomplete board.
28
31
 
29
32
  Partition, as the CLI computes it:
@@ -2,4 +2,7 @@
2
2
  ## MMI developer environment
3
3
 
4
4
  Use the [canonical MMI developer-environment guide](https://github.com/mutmutco/MMI-Hub/blob/main/docs/Architecture/agentic-dev-environment.md) for shared setup and daily agent work.
5
+
6
+ Daily loop: `mmi-cli oracle issue create` → `mmi-cli oracle board claim <n>` (stamps the mmi-claim lease) → `mmi-cli devops pr create` → `mmi-cli devops pr land <pr>`.
7
+ Any org member with repository write (developer) or repository admin (project admin) can run it, with no vault access; release trains stay org-owner only.
5
8
  <!-- mmi-developer-environment:end -->
@@ -6,5 +6,9 @@
6
6
  "scripts/next-version.mjs": {
7
7
  "blob": "2c1985b59edc779695479559074e7654c1574a11",
8
8
  "reason": "comment-only note that rc/release modes are unused in dev-only MM suite repos (#8282), no runtime or operator behaviour change"
9
+ },
10
+ "README.md": {
11
+ "blob": "768c5e35cdb48849c77bce6b334658adefe6a5d8",
12
+ "reason": "the developer-environment seed block now states the concrete mmi-cli loop (issue create, board claim, PR create, PR land) and who may run it — the README propagation is intended (#9987); no runbook step changes"
9
13
  }
10
14
  }
@@ -13,6 +13,23 @@ our self-hosted runners, dispatched by an org owner, never on a workstation (#91
13
13
  A 503 `github-rate-limited` answer means the org App's hourly GitHub allowance is used up. It is
14
14
  not a denial: wait for the reset time it names, then retry.
15
15
 
16
+ ## Developer and project-admin access
17
+
18
+ A developer is an org member with GitHub write on a product repository. A project admin is that
19
+ repository's admin. Both run the full loop with mmi-cli and need no MMI-Hub vault access:
20
+
21
+ ```sh
22
+ mmi-cli oracle issue create --title "<title>" --body-file <path> # files and attaches the board card
23
+ mmi-cli oracle board claim <n> # stamps the mmi-claim lease
24
+ mmi-cli devops pr create --title "<title>" --base development
25
+ mmi-cli devops pr land <pr-number>
26
+ ```
27
+
28
+ Board writes (attach, claim stamp, status move) gate on org owner, repo admin or repository write, so
29
+ these roles pass. Where the GitHub App route is absent the writes go as the person's own GitHub login
30
+ (one note says so); an agent host with the App route writes as the App. MMI-Hub's own merges and all
31
+ release trains stay org-owner only.
32
+
16
33
  Start with `mmi-cli onboard` and the [board skill](../../board/SKILL.md).
17
34
  Reading or discussing the board is read-only until the developer authorizes work.
18
35
  Claim approved work with `mmi-cli oracle board claim <issue>`, then prepare an isolated task