@deeeed/metamask-harness 0.92.19 → 0.92.20

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/CHANGELOG.md CHANGED
@@ -2,6 +2,16 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ## 0.92.20 - 2026-10-17
6
+
7
+ ### Removed
8
+
9
+ - Retire the unused `runtime-health` hidden command and the `health` and `home` aliases of `status`. Extension health checks keep running inside `ensure-ready`, `runtime-decision` and launch verification.
10
+
11
+ ### Changed
12
+
13
+ - Document that hosted tasks resolve the Recipe Cook and Perps checklist roots from each node's pool `env`.
14
+
5
15
  ## 0.92.19 - 2026-10-17
6
16
 
7
17
  ### Fixed
package/README.md CHANGED
@@ -473,6 +473,8 @@ Farmslot selects that same package through `recipe.provider.root.env`, configure
473
473
 
474
474
  Explicitly invoke `mms-recipe-dev`, `mms-recipe-fix-bug`, `mms-recipe-qa` or the team's static review skill. `mms-recipe-cook` selects or resumes their shared Markdown checklist. Matching descriptions or changed paths never activates these workflows.
475
475
 
476
+ Hosted tasks select that checklist on the execution node, not the gateway. The Core, Mobile and Extension packs root their Recipe Cook checklists at `CONSENSYS_RECIPE_COOK_ROOT` and their Perps checklists at `PERPS_RECIPE_LIBRARY_ROOT`. Set them in every node's pool `env`, not only the gateway's. A node missing the root for the selected checklist refuses the task as source unavailable.
477
+
476
478
  Static Perps review uses a generated source checklist without installing or launching the app harness. `recipe-qa` freezes a PR, range or daily change window and requires runtime smoke plus selected recipe proof. Official release validation uses its named release profile and proof lane.
477
479
 
478
480
  TASK.md holds the request; CHECKLIST.md is the sole step list. The frozen terminal contract and task-local mark validate completion. Publication, retained sessions and workspace cleanup belong to the caller. Farmslot handles them through its control plane; direct invocation returns the outcome to the engineer. See the [task-directory guide](site/task-dir.html) and [QA tutorial](site/tutorials/v5.html).
@@ -14,7 +14,7 @@ const SPEC = {
14
14
  { name: "config", desc: "Per-engineer locations and optional advisor settings", args: ["list", "path", "get", "set", "unset"], flags: ["--json"] },
15
15
  { name: "tutorial", desc: "Open the visual recipe tutorial", flags: ["--json", "--no-open"] },
16
16
  { name: "setup-base", desc: "Bootstrap numbered product checkouts", flags: ["--dir", "--counts", "--only", "--dry-run", "--force", "--json", "--show-config", "--reset-config", "--skip-harness-update"] },
17
- { name: "status", aliases: ["health", "home"], desc: "Home status + next commands", flags: ["--json", "--fast", "--watch", "--task"] },
17
+ { name: "status", desc: "Home status + next commands", flags: ["--json", "--fast", "--watch", "--task"] },
18
18
  { name: "ports", desc: "Slot ports and runtime paths", flags: ["--json"] },
19
19
  { name: "up", desc: "Decide + run minimum work to reach ready", flags: ["--json", "--dry-run"] },
20
20
  { name: "sync", desc: "Refresh harness + canonicalize wallet fixture", flags: ["--json"] },
@@ -258,13 +258,12 @@ Example:
258
258
  },
259
259
  {
260
260
  name: "status",
261
- aliases: ["health", "home"],
262
261
  summary: "Home dashboard for a checkout: detected adapter, next command, and (mobile) connected devices with the selected target.",
263
262
  example: "mm-harness status",
264
263
  helpText: `mm-harness status [flags]
265
264
 
266
265
  Home dashboard for the current checkout \u2014 the detected adapter, the next command
267
- to run, and (mobile only) the connected devices with live app state. Aliases: health, home.
266
+ to run, and (mobile only) the connected devices with live app state.
268
267
 
269
268
  --adapter <{adapters}> Target adapter (auto-detected inside a checkout)
270
269
  --target <path> Checkout path (default: cwd)
@@ -1409,7 +1408,6 @@ Example:
1409
1408
  ];
1410
1409
  const HIDDEN_COMMANDS = [
1411
1410
  "completion-candidates",
1412
- "runtime-health",
1413
1411
  "runtime-decision",
1414
1412
  "resolve-extension",
1415
1413
  "ensure-ready",
@@ -54,7 +54,6 @@ import { handleRecipeQuality } from "./commands/recipe-quality.js";
54
54
  import { handleResolveExtension } from "./commands/resolve-extension.js";
55
55
  import { handleReview } from "./commands/review.js";
56
56
  import { handleRuntimeDecision } from "./commands/runtime-decision.js";
57
- import { handleRuntimeHealth } from "./commands/runtime-health.js";
58
57
  import { handleRuntimeLaunch } from "./commands/runtime-launch.js";
59
58
  import { handleSelfTest } from "./commands/self-test.js";
60
59
  import { handleSetupBase } from "./commands/setup-base.js";
@@ -173,7 +172,6 @@ const PUBLIC_RUN = {
173
172
  const HIDDEN_RUN = {
174
173
  // Shell completion answers for the checkout's adapter, so it resolves one.
175
174
  "completion-candidates": { run: handleCompletionCandidates, nudge: false, context: "adapter" },
176
- "runtime-health": { run: (args) => handleRuntimeHealth(parseArgs(args)) },
177
175
  "runtime-decision": { run: (args) => handleRuntimeDecision(parseArgs(args, { recordIsFlag: true })) },
178
176
  "resolve-extension": { run: (args) => handleResolveExtension(parseArgs(args)) },
179
177
  "ensure-ready": { run: (args) => handleEnsureReady(parseArgs(args)) },
@@ -92,7 +92,7 @@ command-local platform ladders for surface-owned behavior:
92
92
  `prepare`, `debug`, `reload` and `runtime-decision` read their own members.
93
93
 
94
94
  A few comparisons remain where a command exists for one platform
95
- (`runtime-health`, `resolve-extension`, `ensure-ready`, `runtime-launch`) or
95
+ (`resolve-extension`, `ensure-ready`, `runtime-launch`) or
96
96
  code compares a platform's own data (`review/knowledge.ts`, the Core jest
97
97
  grouping in `check.ts`, the Mobile release-artifact state file).
98
98
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@deeeed/metamask-harness",
3
- "version": "0.92.19",
3
+ "version": "0.92.20",
4
4
  "type": "module",
5
5
  "bin": {
6
6
  "mm-harness": "bin/mm-harness"
@@ -1,19 +0,0 @@
1
- import { adapterOption, optionFlag, optionString, parsePort, targetPath } from "@farmslot/recipe-cli/harness";
2
- async function handleRuntimeHealth({ options }) {
3
- const adapter = adapterOption(options);
4
- if (adapter !== "extension") throw new Error("runtime-health currently applies to the extension adapter.");
5
- const target = targetPath(options);
6
- const cdpPort = parsePort(
7
- optionString(options, "cdpPort") ?? process.env.CDP_PORT ?? process.env.RECIPE_CDP_PORT,
8
- "runtime-health requires --cdp-port <port>."
9
- );
10
- const { checkExtensionRuntimeHealth, formatHealthFailure } = await import("../adapters/extension/runtime.js");
11
- const report = await checkExtensionRuntimeHealth(target, cdpPort);
12
- if (optionFlag(options, "json")) console.log(JSON.stringify(report, null, 2));
13
- else if (report.status === "PASS") console.log(`PASS extension runtime cdp=${cdpPort} target=${report.targetUrl}`);
14
- else console.error(formatHealthFailure(report, target));
15
- return report.status === "PASS" ? 0 : 1;
16
- }
17
- export {
18
- handleRuntimeHealth
19
- };