scrumrun 2.6.0 → 2.6.2

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/README.md CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  ScrumRun gives an agent a small command surface and a precise project memory: what should be done, how each attempt happened, which decisions constrain the code, and why the architecture exists in its current form.
6
6
 
7
- **Package:** `2.6.0` · **Method target:** `2.0.0` · **Runtime:** Node.js `>=22.13.0` · **License:** MIT
7
+ **Package:** `2.6.2` · **Method target:** `2.0.0` · **Runtime:** Node.js `>=22.13.0` · **License:** MIT
8
8
 
9
9
  **New here?** Read the [Quickstart](docs/QUICKSTART.md) — first Run in under 10 minutes, no `SPEC.md` reading required. Full docs map in [`docs/INDEX.md`](docs/INDEX.md).
10
10
 
@@ -33,11 +33,23 @@ See [`docs/SCHEMA.md`](docs/SCHEMA.md) for the generated executable contract and
33
33
 
34
34
  ## Install
35
35
 
36
+ Install the CLI globally (recommended — avoids `npx` cache quirks):
37
+
38
+ ```bash
39
+ npm i -g scrumrun@latest
40
+ scrumrun install
41
+ scrumrun init
42
+ ```
43
+
44
+ To upgrade later:
45
+
36
46
  ```bash
37
- npx scrumrun@latest install
38
- npx scrumrun@latest init
47
+ npm i -g scrumrun@latest
48
+ scrumrun update
39
49
  ```
40
50
 
51
+ `npx scrumrun@latest <command>` also works if you prefer not to install globally, but pin the version explicitly (`@latest` or `@2.6.1`) — `npx scrumrun` alone will happily reuse a stale cached version.
52
+
41
53
  `install` adds the client integration; `init` creates the project tree. Initialization is local by default: `.scrumrun/` and the generated agent hint are added to `.git/info/exclude`. Use `--shared` when the team wants to commit the project memory.
42
54
 
43
55
  ScrumRun installs one canonical agent command:
package/bin/scrumrun.js CHANGED
@@ -52,7 +52,7 @@ Usage:
52
52
  scrumrun sc
53
53
  scrumrun sc <noun> <subject> <action> [args]
54
54
  scrumrun install [all|codex|opencode|claude] [--force]
55
- scrumrun update [all|codex|opencode|claude] [--migrate]
55
+ scrumrun update [all|codex|opencode|claude] [--no-migrate]
56
56
  scrumrun init [--local|--shared] [--lean] [--no-agent-hint] [--force]
57
57
  scrumrun status
58
58
  scrumrun core [--path|--prompt]
@@ -63,12 +63,16 @@ Usage:
63
63
  scrumrun doctor [all|codex|opencode|claude] [--strict] [--recover]
64
64
  scrumrun uninstall [--force]
65
65
 
66
+ Install:
67
+ npm i -g scrumrun@latest # recommended
68
+ npx scrumrun@latest <command> # also works; pin @latest to avoid stale npx cache
69
+
66
70
  Examples:
67
- npx scrumrun@latest install
68
- npx scrumrun@latest sc knowledge decision --list
69
- npx scrumrun@latest init
70
- npx scrumrun@latest status
71
- npx scrumrun@latest migrate --to 2 --dry-run
71
+ scrumrun install
72
+ scrumrun init
73
+ scrumrun status
74
+ scrumrun sc knowledge decision --list
75
+ scrumrun migrate --to 2 --dry-run
72
76
  `);
73
77
  }
74
78
 
@@ -299,7 +303,7 @@ function migrationPreflightOnUpdate({ apply = false } = {}) {
299
303
  return { status: "blocked" };
300
304
  }
301
305
  if (!apply) {
302
- console.log("\nThe project remains unchanged. Apply the verified plan with: npx scrumrun@latest update --migrate");
306
+ console.log("\nThe project remains unchanged. Re-run update to apply the verified plan, or keep opt-out with: npx scrumrun@latest update --no-migrate");
303
307
  return { status: "ready" };
304
308
  }
305
309
  const result = applyRunLedgerMigration(process.cwd());
@@ -325,7 +329,7 @@ function migrationPreflightOnUpdate({ apply = false } = {}) {
325
329
  return { status: "blocked" };
326
330
  }
327
331
  if (!apply) {
328
- console.log("\nThe project remains unchanged. Apply the verified plan with: npx scrumrun@latest update --migrate");
332
+ console.log("\nThe project remains unchanged. Re-run update to apply the verified plan, or keep opt-out with: npx scrumrun@latest update --no-migrate");
329
333
  return { status: "ready" };
330
334
  }
331
335
  const result = applyMigration(process.cwd(), { plan: preview.plan });
@@ -1570,7 +1574,7 @@ function executeRootRoute(route) {
1570
1574
  }
1571
1575
  if (noun === "config" && subject === "update") {
1572
1576
  const target = ["all", "codex", "opencode", "claude"].includes(routeArgs[0]) ? routeArgs[0] : "all";
1573
- return updateInstallation(target, { migrate: routeArgs.includes("--migrate") });
1577
+ return updateInstallation(target, { migrate: !routeArgs.includes("--no-migrate") });
1574
1578
  }
1575
1579
  if (noun === "config" && subject === "init") {
1576
1580
  const localMode = routeArgs.includes("--local");
@@ -2495,7 +2499,7 @@ if (!command || command === "--help" || command === "-h") {
2495
2499
  console.log(`ScrumRun ${version}`);
2496
2500
  } else if (command === "install" || command === "update") {
2497
2501
  const target = ["all", "codex", "opencode", "claude"].includes(args[1]) ? args[1] : "all";
2498
- if (command === "update") updateInstallation(target, { migrate: args.includes("--migrate") });
2502
+ if (command === "update") updateInstallation(target, { migrate: !args.includes("--no-migrate") });
2499
2503
  else install(target, true, { compatibility: false });
2500
2504
  } else if (command === "sc") {
2501
2505
  runRoot(args.slice(1));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "scrumrun",
3
- "version": "2.6.0",
3
+ "version": "2.6.2",
4
4
  "description": "Evidence-driven Agile runtime and semantic project memory for AI coding agents.",
5
5
  "bin": {
6
6
  "scrumrun": "bin/scrumrun.js",