@wemuda/launchrail 1.14.0 → 1.15.1

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.
Files changed (41) hide show
  1. package/README.md +2 -2
  2. package/assets/ralph.workflow.js +37 -24
  3. package/assets/skills/launchrail/launch/SKILL.md +4 -4
  4. package/assets/skills/launchrail/launch/workflow.md +3 -2
  5. package/assets/skills/launchrail/launch-browser-smoke/SKILL.md +36 -40
  6. package/assets/skills/launchrail/launch-implement/SKILL.md +4 -4
  7. package/assets/skills/launchrail/launch-loop-readiness/SKILL.md +79 -0
  8. package/assets/skills/launchrail/launch-project-alignment/SKILL.md +1 -1
  9. package/assets/skills/launchrail/launch-ralph/SKILL.md +7 -8
  10. package/assets/skills/launchrail/launch-ralph-implement/SKILL.md +5 -5
  11. package/dist/commands/add.js +6 -10
  12. package/dist/commands/add.js.map +1 -1
  13. package/dist/commands/doctor.js +55 -8
  14. package/dist/commands/doctor.js.map +1 -1
  15. package/dist/commands/init.js +0 -1
  16. package/dist/commands/init.js.map +1 -1
  17. package/dist/commands/verify.d.ts +3 -2
  18. package/dist/commands/verify.js +3 -2
  19. package/dist/commands/verify.js.map +1 -1
  20. package/dist/index.js +0 -15
  21. package/dist/index.js.map +1 -1
  22. package/dist/lib/browser-testing.d.ts +20 -3
  23. package/dist/lib/browser-testing.js +79 -79
  24. package/dist/lib/browser-testing.js.map +1 -1
  25. package/dist/lib/detect.d.ts +2 -0
  26. package/dist/lib/detect.js +3 -0
  27. package/dist/lib/detect.js.map +1 -1
  28. package/dist/lib/manifest.d.ts +6 -1
  29. package/dist/lib/manifest.js +17 -5
  30. package/dist/lib/manifest.js.map +1 -1
  31. package/dist/lib/migrations.js +76 -1
  32. package/dist/lib/migrations.js.map +1 -1
  33. package/dist/lib/readiness.d.ts +57 -0
  34. package/dist/lib/readiness.js +129 -0
  35. package/dist/lib/readiness.js.map +1 -0
  36. package/dist/lib/seeds.js +7 -6
  37. package/dist/lib/seeds.js.map +1 -1
  38. package/package.json +1 -1
  39. package/dist/commands/smoke.d.ts +0 -21
  40. package/dist/commands/smoke.js +0 -171
  41. package/dist/commands/smoke.js.map +0 -1
@@ -1,6 +1,23 @@
1
1
  export const BROWSER_TESTING_MODULE = "browser-testing";
2
- export const SMOKE_JOURNEYS_PATH = "docs/testing/smoke-journeys.md";
3
- export const SEMANTIC_SCRIPTS = ["setup", "dev", "verify", "smoke", "doctor"];
2
+ export const SEMANTIC_SCRIPTS = ["setup", "dev", "verify", "doctor"];
3
+ /**
4
+ * The browser smoke's driver (ADR-0034): a shell-driven browser built for
5
+ * agents. Bash is the one surface every session has — hosted, unattended,
6
+ * inside a subagent — and `--session` keeps parallel builders apart.
7
+ */
8
+ export const BROWSER_DRIVER_PACKAGE = "agent-browser";
9
+ /** Where `scripts/dev.mjs` records the URL and pid of the app it started. */
10
+ export const DEV_STATE_DIR = ".launchrail/state";
11
+ /**
12
+ * Paths the module seeded before ADR-0034 — the journey catalogue, the
13
+ * `smoke` entry point and the Playwright MCP config. The retirement migration
14
+ * removes each copy that is unmodified since Launchrail wrote it.
15
+ */
16
+ export const RETIRED_BROWSER_TESTING_SEEDS = [
17
+ "docs/testing/smoke-journeys.md",
18
+ "scripts/smoke.mjs",
19
+ ".mcp.json",
20
+ ];
4
21
  const DEFAULT_APP_URL = "http://localhost:3000";
5
22
  function playwrightConfig(manifest) {
6
23
  const appUrl = manifest.testing.appUrl ?? DEFAULT_APP_URL;
@@ -29,11 +46,13 @@ export default defineConfig({
29
46
  ${webServer}});
30
47
  `;
31
48
  }
32
- function smokeSpec() {
49
+ function baselineSpec() {
33
50
  return `import { expect, test } from "@playwright/test";
34
51
 
35
- // Seeded by Launchrail — the E2E baseline: the app starts, responds, and renders
36
- // without console errors. Extend or replace with real journeys as they stabilize.
52
+ // Seeded by Launchrail — the deterministic e2e baseline: the app starts, responds,
53
+ // and renders without console errors. The e2e lane stays thin (ADR-0034): add a
54
+ // spec here for a standing golden path or a behavior only a real browser can
55
+ // exercise — a feature's one-off check is the browser smoke, never a spec.
37
56
  test("app starts and renders without console errors", async ({ page }) => {
38
57
  const errors: string[] = [];
39
58
  page.on("pageerror", (error) => errors.push(String(error)));
@@ -48,70 +67,14 @@ test("app starts and renders without console errors", async ({ page }) => {
48
67
  });
49
68
  `;
50
69
  }
51
- function smokeJourneysDoc() {
52
- return `# Smoke journeys
53
-
54
- Seeded by Launchrail — this file is yours. It is the smoke-journey contract: the
55
- concrete user journeys an agent drives through the real app in a browser before
56
- user-facing work counts as done.
57
-
58
- - Every ticket that changes user-facing behavior adds or updates a journey here
59
- (or defines one in the ticket itself).
60
- - Each journey heading starts with \`## Journey:\` so tools can list them —
61
- \`npx @wemuda/launchrail smoke\` scaffolds an evidence bundle from this file.
62
- - Agentic smoke testing supplements deterministic tests; it never replaces them.
63
- When a smoke run finds a real bug: record the reproduction, add a failing
64
- deterministic test, fix the bug, prove the test passes, re-run the journey.
65
-
66
- Every journey is verified against the standard checks plus its own list:
67
-
68
- - No uncaught console errors
69
- - No failed API requests
70
- - The success state is visible
71
- - Data remains after refresh
72
-
73
- ## Journey: App loads
74
-
75
- - startAt: /
76
- - actor: anonymous
77
-
78
- Steps:
79
-
80
- 1. Open the app root.
81
- 2. Confirm the main content renders.
82
-
83
- Verify:
84
-
85
- - The page shows meaningful content, not an error screen.
86
- `;
87
- }
88
- /**
89
- * A project-scoped Playwright MCP server so the `browser-smoke` skill can drive
90
- * the app agentically (click/type/navigate, watch console + network) instead of
91
- * only running fixed specs — the skill already looks for "Playwright MCP ...
92
- * whichever is available". Deliberately app-agnostic: the agent supplies URLs at
93
- * run time, so no hardcoded origins. `--isolated` keeps it profile-less, which is
94
- * what a fresh clone / CI / cloud session wants. It is a convenience, never a hard
95
- * dependency — where no MCP is available the seeded Playwright scripts still run
96
- * headless (ADR-0004).
97
- */
98
- function mcpConfig() {
99
- return (JSON.stringify({
100
- mcpServers: {
101
- playwright: {
102
- command: "npx",
103
- args: ["-y", "@playwright/mcp@latest", "--isolated"],
104
- },
105
- },
106
- }, null, 2) + "\n");
107
- }
108
- const ADD_PLAYWRIGHT_DEP = {
109
- pnpm: "pnpm add -D @playwright/test",
110
- yarn: "yarn add -D @playwright/test",
111
- bun: "bun add -d @playwright/test",
112
- npm: "npm install -D @playwright/test",
70
+ const ADD_DEV_DEP = {
71
+ pnpm: (pkg) => `pnpm add -D ${pkg}`,
72
+ yarn: (pkg) => `yarn add -D ${pkg}`,
73
+ bun: (pkg) => `bun add -d ${pkg}`,
74
+ npm: (pkg) => `npm install -D ${pkg}`,
113
75
  };
114
76
  function setupScript(pm) {
77
+ const addDev = ADD_DEV_DEP[pm];
115
78
  return `#!/usr/bin/env node
116
79
  // Seeded by Launchrail — yours to adapt. Prepares a fresh clone for local, CI, or cloud work.
117
80
  import { spawnSync } from "node:child_process";
@@ -127,34 +90,62 @@ function run(command) {
127
90
 
128
91
  run("${pm} install");
129
92
  if (!existsSync("node_modules/@playwright/test")) {
130
- run("${ADD_PLAYWRIGHT_DEP[pm]}");
93
+ run("${addDev("@playwright/test")}");
131
94
  }
132
95
  // Cloud and CI machines need browser OS dependencies; local machines usually have them.
133
96
  run(cloud ? "npx playwright install --with-deps chromium" : "npx playwright install chromium");
97
+ // The browser smoke's driver: a shell-driven browser for agents, with its own Chromium.
98
+ if (!existsSync("node_modules/${BROWSER_DRIVER_PACKAGE}")) {
99
+ run("${addDev(BROWSER_DRIVER_PACKAGE)}");
100
+ }
101
+ run("npx ${BROWSER_DRIVER_PACKAGE} install");
134
102
  console.log("\\nSetup complete. Next: node scripts/doctor.mjs");
135
103
  `;
136
104
  }
137
- function devScript(devCommand) {
105
+ function devScript(devCommand, appUrl) {
138
106
  return `#!/usr/bin/env node
139
107
  // Seeded by Launchrail — yours to adapt. Starts the app for development and testing.
140
108
  import { spawn, spawnSync } from "node:child_process";
141
- import { mkdirSync, openSync } from "node:fs";
109
+ import { existsSync, mkdirSync, openSync, writeFileSync } from "node:fs";
142
110
 
143
111
  const DEV_COMMAND = ${JSON.stringify(devCommand ?? "")};
112
+ const APP_URL = ${JSON.stringify(appUrl ?? DEFAULT_APP_URL)};
113
+ const STATE_DIR = ${JSON.stringify(DEV_STATE_DIR)};
114
+
144
115
  if (DEV_COMMAND === "") {
145
116
  console.error("No dev command configured. Edit scripts/dev.mjs and set DEV_COMMAND to whatever starts this app.");
146
117
  process.exit(1);
147
118
  }
148
119
 
149
- if (process.argv.includes("--background")) {
120
+ // Parallel builders each start their own app: \`--port <n>\` picks a port nobody
121
+ // else uses. The dev command sees it as PORT — adapt this file if your app reads
122
+ // another name or flag.
123
+ const args = process.argv.slice(2);
124
+ const portFlag = args.indexOf("--port");
125
+ const port = portFlag !== -1 ? args[portFlag + 1] : process.env.PORT;
126
+ const url = new URL(APP_URL);
127
+ if (port) url.port = String(port);
128
+ const appUrl = url.href.replace(/\\/$/, "");
129
+ const env = port ? { ...process.env, PORT: String(port) } : process.env;
130
+
131
+ // Agents read the URL (and the pid, in background mode) from here; the state
132
+ // directory ignores itself so nothing in it reaches git.
133
+ mkdirSync(STATE_DIR, { recursive: true });
134
+ if (!existsSync(STATE_DIR + "/.gitignore")) writeFileSync(STATE_DIR + "/.gitignore", "*\\n");
135
+ writeFileSync(STATE_DIR + "/dev.url", appUrl + "\\n");
136
+
137
+ if (args.includes("--background")) {
150
138
  // Cloud and CI sessions need the app running without holding the terminal.
151
- mkdirSync(".launchrail/state", { recursive: true });
152
- const log = openSync(".launchrail/state/dev.log", "a");
153
- const child = spawn(DEV_COMMAND, { shell: true, detached: true, stdio: ["ignore", log, log] });
139
+ const log = openSync(STATE_DIR + "/dev.log", "a");
140
+ const child = spawn(DEV_COMMAND, { shell: true, detached: true, stdio: ["ignore", log, log], env });
154
141
  child.unref();
155
- console.log("Started \`" + DEV_COMMAND + "\` in the background (pid " + child.pid + "). Logs: .launchrail/state/dev.log");
142
+ writeFileSync(STATE_DIR + "/dev.pid", String(child.pid) + "\\n");
143
+ console.log(
144
+ "Started \`" + DEV_COMMAND + "\` in the background (pid " + child.pid + ") for " + appUrl +
145
+ ". Logs: " + STATE_DIR + "/dev.log — stop it with \`kill $(cat " + STATE_DIR + "/dev.pid)\`.",
146
+ );
156
147
  } else {
157
- const result = spawnSync(DEV_COMMAND, { shell: true, stdio: "inherit" });
148
+ const result = spawnSync(DEV_COMMAND, { shell: true, stdio: "inherit", env });
158
149
  process.exit(result.status ?? 0);
159
150
  }
160
151
  `;
@@ -176,15 +167,24 @@ process.exit(result.status ?? 1);
176
167
  /**
177
168
  * Everything `launchrail add browser-testing` seeds. All files are seeded-class:
178
169
  * created once, then project-owned. An existing Playwright config means the
179
- * project already has an E2E layer — keep it, seed neither config nor baseline.
170
+ * project already has an e2e layer — keep it, seed neither config nor baseline.
171
+ *
172
+ * Two lanes (ADR-0034): the deterministic e2e baseline runs inside `verify`;
173
+ * the browser smoke is one-off driving by the agent and seeds no file of its
174
+ * own — its driver installs through `scripts/setup.mjs`.
180
175
  */
181
176
  export function browserTestingFiles(ctx) {
182
177
  const pm = ctx.detection.packageManager ?? "npm";
183
178
  const specs = [];
184
179
  if (!ctx.detection.playwrightConfigFile) {
185
- specs.push({ relPath: "playwright.config.ts", content: playwrightConfig(ctx.manifest), ownership: "seeded" }, { relPath: "tests/e2e/smoke.spec.ts", content: smokeSpec(), ownership: "seeded" });
180
+ specs.push({ relPath: "playwright.config.ts", content: playwrightConfig(ctx.manifest), ownership: "seeded" }, { relPath: "tests/e2e/baseline.spec.ts", content: baselineSpec(), ownership: "seeded" });
186
181
  }
187
- specs.push({ relPath: ".mcp.json", content: mcpConfig(), ownership: "seeded" }, { relPath: SMOKE_JOURNEYS_PATH, content: smokeJourneysDoc(), ownership: "seeded" }, { relPath: "scripts/setup.mjs", content: setupScript(pm), ownership: "seeded", executable: true }, { relPath: "scripts/dev.mjs", content: devScript(ctx.manifest.testing.devCommand), ownership: "seeded", executable: true }, { relPath: "scripts/verify.mjs", content: delegatingScript("verify"), ownership: "seeded", executable: true }, { relPath: "scripts/smoke.mjs", content: delegatingScript("smoke"), ownership: "seeded", executable: true }, { relPath: "scripts/doctor.mjs", content: delegatingScript("doctor"), ownership: "seeded", executable: true });
182
+ specs.push({ relPath: "scripts/setup.mjs", content: setupScript(pm), ownership: "seeded", executable: true }, {
183
+ relPath: "scripts/dev.mjs",
184
+ content: devScript(ctx.manifest.testing.devCommand, ctx.manifest.testing.appUrl),
185
+ ownership: "seeded",
186
+ executable: true,
187
+ }, { relPath: "scripts/verify.mjs", content: delegatingScript("verify"), ownership: "seeded", executable: true }, { relPath: "scripts/doctor.mjs", content: delegatingScript("doctor"), ownership: "seeded", executable: true });
188
188
  return specs;
189
189
  }
190
190
  //# sourceMappingURL=browser-testing.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"browser-testing.js","sourceRoot":"","sources":["../../src/lib/browser-testing.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"browser-testing.js","sourceRoot":"","sources":["../../src/lib/browser-testing.ts"],"names":[],"mappings":"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"}
@@ -13,6 +13,8 @@ export interface RepoDetection {
13
13
  hasPlaywrightDep: boolean;
14
14
  /** First `playwright.config.*` found at the repo root, if any. */
15
15
  playwrightConfigFile: string | null;
16
+ /** `agent-browser`, the browser smoke's driver (ADR-0034), declared in dependencies/devDependencies. */
17
+ hasBrowserDriverDep: boolean;
16
18
  projectName: string;
17
19
  hasAgentsMd: boolean;
18
20
  hasClaudeMd: boolean;
@@ -31,6 +31,7 @@ export function detectRepo(root) {
31
31
  let testScript = null;
32
32
  let devScript = null;
33
33
  let hasPlaywrightDep = false;
34
+ let hasBrowserDriverDep = false;
34
35
  let packageManagerField = null;
35
36
  if (hasPackageJson) {
36
37
  try {
@@ -45,6 +46,7 @@ export function detectRepo(root) {
45
46
  packageManagerField = pkg.packageManager;
46
47
  const deps = { ...pkg.dependencies, ...pkg.devDependencies };
47
48
  hasPlaywrightDep = "@playwright/test" in deps || "playwright" in deps;
49
+ hasBrowserDriverDep = "agent-browser" in deps;
48
50
  }
49
51
  catch {
50
52
  // Malformed package.json is doctor's problem, not detection's.
@@ -78,6 +80,7 @@ export function detectRepo(root) {
78
80
  devScript,
79
81
  hasPlaywrightDep,
80
82
  playwrightConfigFile,
83
+ hasBrowserDriverDep,
81
84
  projectName: packageName ?? basename(root),
82
85
  hasAgentsMd: existsSync(join(root, "AGENTS.md")),
83
86
  hasClaudeMd: existsSync(join(root, "CLAUDE.md")),
@@ -1 +1 @@
1
- {"version":3,"file":"detect.js","sourceRoot":"","sources":["../../src/lib/detect.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"detect.js","sourceRoot":"","sources":["../../src/lib/detect.ts"],"names":[],"mappings":"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"}
@@ -14,7 +14,7 @@ export type IssueTracker = (typeof ISSUE_TRACKERS)[number];
14
14
  * `unitCommand`); the full `verify` still runs `unitCommand` and, with the
15
15
  * browser-testing module, `e2eCommand`.
16
16
  */
17
- export declare const TESTING_KEYS: readonly ["unitCommand", "checkCommand", "devCommand", "e2eCommand", "smokeCommand", "appUrl"];
17
+ export declare const TESTING_KEYS: readonly ["unitCommand", "checkCommand", "devCommand", "e2eCommand", "appUrl"];
18
18
  export type TestingKey = (typeof TESTING_KEYS)[number];
19
19
  export interface Manifest {
20
20
  schemaVersion: 1;
@@ -54,6 +54,11 @@ export interface KeyRemovalResult {
54
54
  * the user's comments and formatting.
55
55
  */
56
56
  export declare function removeManifestKey(source: string, key: string): KeyRemovalResult;
57
+ /**
58
+ * Remove a retired `testing.<key>` from an existing manifest source — the same
59
+ * comment-preserving round-trip as `removeManifestKey`, one level down.
60
+ */
61
+ export declare function removeTestingKey(source: string, key: string): KeyRemovalResult;
57
62
  /**
58
63
  * Enable a module and record testing commands in an existing manifest source.
59
64
  *
@@ -13,7 +13,7 @@ export const ISSUE_TRACKERS = ["github", "gitlab", "linear", "local", "none"];
13
13
  * `unitCommand`); the full `verify` still runs `unitCommand` and, with the
14
14
  * browser-testing module, `e2eCommand`.
15
15
  */
16
- export const TESTING_KEYS = ["unitCommand", "checkCommand", "devCommand", "e2eCommand", "smokeCommand", "appUrl"];
16
+ export const TESTING_KEYS = ["unitCommand", "checkCommand", "devCommand", "e2eCommand", "appUrl"];
17
17
  function isRecord(value) {
18
18
  return typeof value === "object" && value !== null && !Array.isArray(value);
19
19
  }
@@ -63,7 +63,6 @@ export function validateManifest(data) {
63
63
  checkCommand: null,
64
64
  devCommand: null,
65
65
  e2eCommand: null,
66
- smokeCommand: null,
67
66
  appUrl: null,
68
67
  };
69
68
  if (data.testing !== undefined) {
@@ -92,9 +91,10 @@ export function validateManifest(data) {
92
91
  }
93
92
  }
94
93
  // `implementationLoop` (ADR-0017) was removed by ADR-0020 — Ralph is the
95
- // loop — and `mode` (spike / standard-mvp / high-rigor) was removed by
96
- // ADR-0023. Manifests that still carry either key stay valid: unknown keys
97
- // are ignored here, and the corresponding migrations delete them.
94
+ // loop — `mode` (spike / standard-mvp / high-rigor) was removed by ADR-0023,
95
+ // and `testing.smokeCommand` by ADR-0034. Manifests that still carry any of
96
+ // them stay valid: unknown keys are ignored here, and the corresponding
97
+ // migrations delete them.
98
98
  if (errors.length > 0)
99
99
  return { manifest: null, errors };
100
100
  return {
@@ -138,6 +138,18 @@ export function removeManifestKey(source, key) {
138
138
  doc.delete(key);
139
139
  return { source: doc.toString(), changed: true, previous };
140
140
  }
141
+ /**
142
+ * Remove a retired `testing.<key>` from an existing manifest source — the same
143
+ * comment-preserving round-trip as `removeManifestKey`, one level down.
144
+ */
145
+ export function removeTestingKey(source, key) {
146
+ const doc = parseDocument(source);
147
+ if (!doc.hasIn(["testing", key]))
148
+ return { source, changed: false, previous: undefined };
149
+ const previous = doc.getIn(["testing", key]);
150
+ doc.deleteIn(["testing", key]);
151
+ return { source: doc.toString(), changed: true, previous };
152
+ }
141
153
  /**
142
154
  * Enable a module and record testing commands in an existing manifest source.
143
155
  *
@@ -1 +1 @@
1
- {"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../src/lib/manifest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AAEvD,MAAM,CAAC,MAAM,iBAAiB,GAAG,iBAAiB,CAAC;AAEnD;;;;GAIG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,KAAK,EAAE,UAAU,CAAU,CAAC;AAGpD,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAU,CAAC;AAGvF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,aAAa,EAAE,cAAc,EAAE,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,QAAQ,CAAU,CAAC;AAmB3H,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAa;IAC5C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACpB,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,iCAAiC,CAAC,EAAE,CAAC;IACzE,CAAC;IACD,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,IAAI,IAAI,CAAC,aAAa,KAAK,CAAC,EAAE,CAAC;QAC7B,MAAM,CAAC,IAAI,CAAC,kCAAkC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;IAC/F,CAAC;IAED,4EAA4E;IAC5E,0DAA0D;IAC1D,IAAI,MAAM,GAAW,KAAK,CAAC;IAC3B,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAC9B,IAAI,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,IAAK,OAA6B,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YAC5F,MAAM,GAAG,IAAI,CAAC,MAAgB,CAAC;QACjC,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,0BAA0B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;IAED,IAAI,YAAY,GAAiB,MAAM,CAAC;IACxC,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;QACpC,IAAI,OAAO,IAAI,CAAC,YAAY,KAAK,QAAQ,IAAK,cAAoC,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;YAC/G,YAAY,GAAG,IAAI,CAAC,YAA4B,CAAC;QACnD,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,gCAAgC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC3E,CAAC;IACH,CAAC;IAED,IAAI,mBAAmB,GAAG,IAAI,CAAC;IAC/B,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;QACnC,IAAI,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,OAAO,IAAI,CAAC,WAAW,CAAC,mBAAmB,KAAK,SAAS,EAAE,CAAC;YAC5F,mBAAmB,GAAG,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC;QAC7D,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC;QACnE,CAAC;IACH,CAAC;IAED,MAAM,OAAO,GAAsC;QACjD,WAAW,EAAE,IAAI;QACjB,YAAY,EAAE,IAAI;QAClB,UAAU,EAAE,IAAI;QAChB,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;QAClB,MAAM,EAAE,IAAI;KACb,CAAC;IACF,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QAC/B,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3B,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;gBAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBAChC,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;oBAAE,SAAS;gBACpD,IAAI,OAAO,KAAK,KAAK,QAAQ;oBAAE,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;;oBAC/C,MAAM,CAAC,IAAI,CAAC,WAAW,GAAG,2BAA2B,CAAC,CAAC;YAC9D,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;IAED,IAAI,OAAO,GAA4B,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACtD,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QAC/B,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,SAAS,CAAC,EAAE,CAAC;YAC/F,OAAO,GAAG,IAAI,CAAC,OAAkC,CAAC;QACpD,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC;IAED,yEAAyE;IACzE,uEAAuE;IACvE,2EAA2E;IAC3E,kEAAkE;IAElE,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IACzD,OAAO;QACL,QAAQ,EAAE;YACR,aAAa,EAAE,CAAC;YAChB,MAAM;YACN,YAAY;YACZ,WAAW,EAAE,EAAE,mBAAmB,EAAE;YACpC,OAAO;YACP,OAAO;SACR;QACD,MAAM,EAAE,EAAE;KACX,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,MAAc;IAC1C,IAAI,IAAa,CAAC;IAClB,IAAI,CAAC;QACH,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;IACvB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,iBAAiB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;IAC3G,CAAC;IACD,OAAO,gBAAgB,CAAC,IAAI,CAAC,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,QAAkB;IAClD,MAAM,MAAM,GACV,wEAAwE;QACxE,oFAAoF,CAAC;IACvF,OAAO,MAAM,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;AACtC,CAAC;AAcD;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAc,EAAE,GAAW;IAC3D,MAAM,GAAG,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;IAClC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;IAC1E,MAAM,QAAQ,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC9B,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAChB,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;AAC7D,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,gBAAgB,CAC9B,MAAc,EACd,MAAc,EACd,OAAmD;IAEnD,MAAM,GAAG,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;IAClC,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QAC5C,GAAG,CAAC,KAAK,CAAC,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,CAAC;QACrC,OAAO,GAAG,IAAI,CAAC;IACjB,CAAC;IACD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACnD,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC;QAC5C,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,EAAE,CAAC;YAC1C,GAAG,CAAC,KAAK,CAAC,CAAC,SAAS,EAAE,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;YACnC,OAAO,GAAG,IAAI,CAAC;QACjB,CAAC;IACH,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,CAAC;AAC7C,CAAC"}
1
+ {"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../src/lib/manifest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AAEvD,MAAM,CAAC,MAAM,iBAAiB,GAAG,iBAAiB,CAAC;AAEnD;;;;GAIG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,KAAK,EAAE,UAAU,CAAU,CAAC;AAGpD,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAU,CAAC;AAGvF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,aAAa,EAAE,cAAc,EAAE,YAAY,EAAE,YAAY,EAAE,QAAQ,CAAU,CAAC;AAmB3G,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAa;IAC5C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACpB,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,iCAAiC,CAAC,EAAE,CAAC;IACzE,CAAC;IACD,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,IAAI,IAAI,CAAC,aAAa,KAAK,CAAC,EAAE,CAAC;QAC7B,MAAM,CAAC,IAAI,CAAC,kCAAkC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;IAC/F,CAAC;IAED,4EAA4E;IAC5E,0DAA0D;IAC1D,IAAI,MAAM,GAAW,KAAK,CAAC;IAC3B,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAC9B,IAAI,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,IAAK,OAA6B,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YAC5F,MAAM,GAAG,IAAI,CAAC,MAAgB,CAAC;QACjC,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,0BAA0B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;IAED,IAAI,YAAY,GAAiB,MAAM,CAAC;IACxC,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;QACpC,IAAI,OAAO,IAAI,CAAC,YAAY,KAAK,QAAQ,IAAK,cAAoC,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;YAC/G,YAAY,GAAG,IAAI,CAAC,YAA4B,CAAC;QACnD,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,gCAAgC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC3E,CAAC;IACH,CAAC;IAED,IAAI,mBAAmB,GAAG,IAAI,CAAC;IAC/B,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;QACnC,IAAI,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,OAAO,IAAI,CAAC,WAAW,CAAC,mBAAmB,KAAK,SAAS,EAAE,CAAC;YAC5F,mBAAmB,GAAG,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC;QAC7D,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC;QACnE,CAAC;IACH,CAAC;IAED,MAAM,OAAO,GAAsC;QACjD,WAAW,EAAE,IAAI;QACjB,YAAY,EAAE,IAAI;QAClB,UAAU,EAAE,IAAI;QAChB,UAAU,EAAE,IAAI;QAChB,MAAM,EAAE,IAAI;KACb,CAAC;IACF,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QAC/B,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3B,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;gBAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBAChC,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;oBAAE,SAAS;gBACpD,IAAI,OAAO,KAAK,KAAK,QAAQ;oBAAE,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;;oBAC/C,MAAM,CAAC,IAAI,CAAC,WAAW,GAAG,2BAA2B,CAAC,CAAC;YAC9D,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;IAED,IAAI,OAAO,GAA4B,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACtD,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QAC/B,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,SAAS,CAAC,EAAE,CAAC;YAC/F,OAAO,GAAG,IAAI,CAAC,OAAkC,CAAC;QACpD,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC;IAED,yEAAyE;IACzE,6EAA6E;IAC7E,4EAA4E;IAC5E,wEAAwE;IACxE,0BAA0B;IAE1B,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IACzD,OAAO;QACL,QAAQ,EAAE;YACR,aAAa,EAAE,CAAC;YAChB,MAAM;YACN,YAAY;YACZ,WAAW,EAAE,EAAE,mBAAmB,EAAE;YACpC,OAAO;YACP,OAAO;SACR;QACD,MAAM,EAAE,EAAE;KACX,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,MAAc;IAC1C,IAAI,IAAa,CAAC;IAClB,IAAI,CAAC;QACH,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;IACvB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,iBAAiB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;IAC3G,CAAC;IACD,OAAO,gBAAgB,CAAC,IAAI,CAAC,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,QAAkB;IAClD,MAAM,MAAM,GACV,wEAAwE;QACxE,oFAAoF,CAAC;IACvF,OAAO,MAAM,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;AACtC,CAAC;AAcD;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAc,EAAE,GAAW;IAC3D,MAAM,GAAG,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;IAClC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;IAC1E,MAAM,QAAQ,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC9B,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAChB,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;AAC7D,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAAc,EAAE,GAAW;IAC1D,MAAM,GAAG,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;IAClC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;QAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;IACzF,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC;IAC7C,GAAG,CAAC,QAAQ,CAAC,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC;IAC/B,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;AAC7D,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,gBAAgB,CAC9B,MAAc,EACd,MAAc,EACd,OAAmD;IAEnD,MAAM,GAAG,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;IAClC,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QAC5C,GAAG,CAAC,KAAK,CAAC,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,CAAC;QACrC,OAAO,GAAG,IAAI,CAAC;IACjB,CAAC;IACD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACnD,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC;QAC5C,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,EAAE,CAAC;YAC1C,GAAG,CAAC,KAAK,CAAC,CAAC,SAAS,EAAE,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;YACnC,OAAO,GAAG,IAAI,CAAC;QACjB,CAAC;IACH,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,CAAC;AAC7C,CAAC"}
@@ -2,7 +2,8 @@ import { existsSync, readFileSync, rmdirSync, unlinkSync, writeFileSync } from "
2
2
  import { dirname, join } from "node:path";
3
3
  import { sha256 } from "./checksum.js";
4
4
  import { applyPluginDeclaration, applyRalphGuardHook, applyRemovePluginDeclaration, CLAUDE_SETTINGS_PATH, planPluginDeclaration, planRalphGuardHook, planRemovePluginDeclaration, RETIRED_SUPERPOWERS_DECLARATION, } from "./claudeSettings.js";
5
- import { MANIFEST_FILENAME, parseManifest, removeManifestKey, setModuleEnabled } from "./manifest.js";
5
+ import { RETIRED_BROWSER_TESTING_SEEDS } from "./browser-testing.js";
6
+ import { MANIFEST_FILENAME, parseManifest, removeManifestKey, removeTestingKey, setModuleEnabled } from "./manifest.js";
6
7
  import { RALPH_MODULE, RALPH_WORKFLOW_PATH, ralphFiles } from "./ralph.js";
7
8
  import { SKILLS_DEST_PREFIX, skillFiles } from "./skills.js";
8
9
  import { applyPlan, planWrites } from "./writer.js";
@@ -263,6 +264,80 @@ export const MIGRATIONS = [
263
264
  };
264
265
  },
265
266
  },
267
+ {
268
+ id: "2026-09-browser-smoke-one-off",
269
+ description: "retire the smoke-journey catalogue, the evidence bundle, the smoke entry point and the seeded Playwright MCP — the browser smoke is one-off driving of the running stack, the e2e lane stays thin (ADR-0034)",
270
+ plan(ctx) {
271
+ const none = { changes: [], apply: () => { } };
272
+ const manifestPath = join(ctx.cwd, MANIFEST_FILENAME);
273
+ if (!existsSync(manifestPath))
274
+ return none;
275
+ const source = readFileSync(manifestPath, "utf8");
276
+ // An invalid manifest is sync's own precondition failure, not this
277
+ // migration's.
278
+ if (!parseManifest(source).manifest)
279
+ return none;
280
+ const changes = [];
281
+ // 1. The retired seeds. Delete each tracked copy that is unmodified since
282
+ // Launchrail wrote it; a locally modified copy stays on disk — its content
283
+ // is the project's (a journeys file becomes ticket text at the project's
284
+ // own pace) — and only stops being tracked. A path Launchrail never wrote
285
+ // is not touched at all.
286
+ const removable = [];
287
+ const keptModified = [];
288
+ for (const relPath of RETIRED_BROWSER_TESTING_SEEDS) {
289
+ const entry = ctx.lockfile.files[relPath];
290
+ if (!entry || entry.class === "ejected")
291
+ continue;
292
+ const abs = join(ctx.cwd, relPath);
293
+ if (!existsSync(abs) || sha256(readFileSync(abs, "utf8")) === entry.checksum) {
294
+ removable.push(relPath);
295
+ }
296
+ else {
297
+ keptModified.push(relPath);
298
+ }
299
+ }
300
+ for (const relPath of removable) {
301
+ changes.push(`${relPath} — remove (retired seed, unmodified since Launchrail wrote it)`);
302
+ }
303
+ for (const relPath of keptModified) {
304
+ changes.push(`${relPath} — locally modified; kept on disk, no longer managed`);
305
+ }
306
+ // 2. The manifest's testing.smokeCommand is retired — there is no smoke
307
+ // entry point; the browser smoke is the skill driving the running app.
308
+ const keyRemoval = removeTestingKey(source, "smokeCommand");
309
+ if (keyRemoval.changed)
310
+ changes.push(`${MANIFEST_FILENAME} — remove the retired testing.smokeCommand field`);
311
+ if (changes.length === 0)
312
+ return none;
313
+ return {
314
+ changes,
315
+ apply: () => {
316
+ for (const relPath of removable) {
317
+ const abs = join(ctx.cwd, relPath);
318
+ if (existsSync(abs))
319
+ unlinkSync(abs);
320
+ delete ctx.lockfile.files[relPath];
321
+ // Clear the directory a delete emptied (docs/testing/); rmdir
322
+ // refuses a non-empty one, which is exactly the guard.
323
+ const dir = dirname(abs);
324
+ if (dir !== ctx.cwd) {
325
+ try {
326
+ rmdirSync(dir);
327
+ }
328
+ catch {
329
+ // Not empty, or the project root — leave it.
330
+ }
331
+ }
332
+ }
333
+ for (const relPath of keptModified)
334
+ delete ctx.lockfile.files[relPath];
335
+ if (keyRemoval.changed)
336
+ writeFileSync(manifestPath, keyRemoval.source, "utf8");
337
+ },
338
+ };
339
+ },
340
+ },
266
341
  ];
267
342
  export function migrationIds(registry = MIGRATIONS) {
268
343
  return registry.map((migration) => migration.id);
@@ -1 +1 @@
1
- {"version":3,"file":"migrations.js","sourceRoot":"","sources":["../../src/lib/migrations.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"migrations.js","sourceRoot":"","sources":["../../src/lib/migrations.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,57 @@
1
+ import type { RepoDetection } from "./detect.js";
2
+ import type { Manifest } from "./manifest.js";
3
+ /**
4
+ * Loop readiness (ADR-0033): the implementation loop is only as fast as the
5
+ * repository's gates, caches, and CI triggers let it be. These are the
6
+ * deterministic halves of the readiness story — doctor reports them as warn-only
7
+ * `ralph …` lines, and the `launch-loop-readiness` skill measures and fixes them.
8
+ */
9
+ export declare const READINESS_SKILL = "launch-loop-readiness";
10
+ /** The placeholder init seeds into AGENTS.md when no test command was detected. */
11
+ export declare const AGENTS_COMMANDS_TODO = "TODO: document the commands agents must run";
12
+ export interface FastGateReadiness {
13
+ status: "pass" | "warn";
14
+ message: string;
15
+ }
16
+ /**
17
+ * `verify --fast` runs `testing.checkCommand` and falls back to the unit command.
18
+ * On a project with e2e specs that fallback makes every land pay the full
19
+ * suite — a warning; on a light project it is fine, and only worth a hint.
20
+ */
21
+ export declare function fastGateReadiness(manifest: Manifest, detection: RepoDetection): FastGateReadiness;
22
+ export interface CiTriggerReadiness {
23
+ /** Workflow files found under .github/workflows. */
24
+ workflows: string[];
25
+ /** The ones whose `on` fires on every push — no branch, path, or tag filter. */
26
+ everyPush: string[];
27
+ }
28
+ /**
29
+ * The loop pushes `ralph/*` branches on every green step and the integration
30
+ * branch on every land. A workflow that triggers on every push turns each of
31
+ * those into a CI run nobody waits on — runner minutes and queue slots for
32
+ * nothing. GitHub Actions only; other CI systems are the skill's job.
33
+ */
34
+ export declare function ciTriggerReadiness(cwd: string): CiTriggerReadiness;
35
+ export interface E2eReadiness {
36
+ file: string;
37
+ /** The config pins Playwright to a single worker, so every e2e spec runs serially. */
38
+ serial: boolean;
39
+ evidence: string | null;
40
+ }
41
+ /**
42
+ * A `workers: 1` pin makes the whole e2e suite serial — the full gate's
43
+ * dominant cost in the field. A textual heuristic (the config is code): it flags
44
+ * only the global single-worker pin, never per-project parallelism choices.
45
+ */
46
+ export declare function e2eReadiness(cwd: string, configFile: string): E2eReadiness;
47
+ export type SessionStartHookState = "registered" | "missing" | "invalid-json";
48
+ /**
49
+ * Hosted sessions (Claude Code on the web) start from a fresh container: without
50
+ * a SessionStart hook nothing installs dependencies or the pinned browsers, and
51
+ * the loop's preflight refuses on the mismatch. Any registered SessionStart
52
+ * command counts — the hook's contents are the project's.
53
+ */
54
+ export declare function sessionStartHookState(cwd: string): SessionStartHookState;
55
+ export type AgentsCommandsState = "documented" | "todo" | "missing";
56
+ /** Builders read install, check, and test commands verbatim from AGENTS.md. */
57
+ export declare function agentsCommandsState(cwd: string): AgentsCommandsState;