@msn-control/liftoff 0.12.0 → 0.12.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.
package/DEVELOPER.md CHANGED
@@ -274,33 +274,23 @@ npm run verify:generated-containers
274
274
  npm run verify:release-identity
275
275
  ```
276
276
 
277
- ## 0.12.0 release checklist
277
+ ## 0.12.1 release checklist
278
278
 
279
279
  - Package metadata, lockfile metadata, `liftoff --version`, and tag agree on
280
- `0.11.3`. Preparing these files is not publication or permission to create a tag.
281
- - Activation package identity remains `0.11.0`; no phase semantics or graph
280
+ `0.12.1`. Preparing these files is not publication or permission to create a tag.
281
+ - Activation package identity remains `0.12.0`; no phase semantics or graph
282
282
  identity change is introduced by patch-release preparation.
283
- - Release notes identify context-aware update follow-ups, root-aware validation
284
- guidance, and reason-specific preview errors. Mandatory matching preview and
285
- exact-plan approval, schema-3 project-update reports, and exit 2 after committed
286
- but incomplete local revalidation remain unchanged.
283
+ - Release notes identify the verified macOS Homebrew npm global prefix recovery
284
+ in `liftoff upgrade`, binding registry probes, exact installation, pre-write
285
+ rechecks, and replacement verification to the verified Homebrew target prefix.
287
286
  - Manifest writes use artifactVersion 7; readers accept v2-v7.
288
287
  - Policy version is `"6"`; activation contract/state/evidence-header/approval
289
- remain v2. Compatibility metadata and update reports are v3; preview receipts,
288
+ remain v3. Compatibility metadata is v4; preview receipts,
290
289
  transaction approvals, history indexes, and migration journals are v1. Graph,
291
290
  supersession, credential-policy, assessment report, and assessment catalog
292
291
  schemas remain v1.
293
- - The graph hash in code, docs, generated artifacts, compatibility metadata, and
294
- release-integrity tests is
295
- `ac160e3fc86f3e438141d985658e09f419508b3adbe176ddd13100d5dfdee47c`.
296
- - `/liftoff-setup` archives the OpenSpec bootstrap or finalizes the real Spec Kit
297
- B001–B006 bundle locally before separate publication and Phase 0 gates.
298
- - Power Apps and the eight explicitly retired flat-root infrastructure IDs have
299
- no positive new-generation lane. Old API/GenAI project provenance and v1
300
- activation history remain preserved. Only the exact approved migration lane
301
- can create a linked v2 successor; it does not retag historical proof.
302
292
  - Independent infrastructure provenance explicitly admits generation versions
303
- `0.11.0`, `0.11.1`, `0.11.2`, and `0.11.3`, including mixed component histories.
293
+ `0.11.0`, `0.11.1`, `0.11.2`, `0.11.3`, `0.12.0`, and `0.12.1`, including mixed component histories.
304
294
  Unknown releases remain blocked rather than being accepted through a version range.
305
295
  - No setup-skill version exists in manifests, JSON status, docs, or generated
306
296
  integrations.
@@ -4,6 +4,9 @@ import { liftoffVersion } from '../../version.js';
4
4
  function renderSelfUpgradeResult(value, presentation) {
5
5
  const details = [
6
6
  { label: 'Current CLI', value: value.currentVersion },
7
+ ...(value.installationTarget
8
+ ? [{ label: 'Installation target', value: value.installationTarget }]
9
+ : []),
7
10
  ...('targetVersion' in value && value.targetVersion
8
11
  ? [{ label: 'Canonical target', value: value.targetVersion }]
9
12
  : []),
@@ -1 +1 @@
1
- {"version":3,"file":"use-case.js","sourceRoot":"","sources":["../../../src/application/upgrade/use-case.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"use-case.js","sourceRoot":"","sources":["../../../src/application/upgrade/use-case.ts"],"names":[],"mappings":"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"}
@@ -16,7 +16,7 @@ export interface InfrastructureProvisioningGate {
16
16
  reason: string;
17
17
  }
18
18
  export declare const independentInfrastructureGenerationVersion: '0.11.0';
19
- export declare const compatibleIndependentInfrastructureGenerationVersions: readonly ["0.11.0", '0.11.1', '0.11.2', '0.11.3', '0.12.0'];
19
+ export declare const compatibleIndependentInfrastructureGenerationVersions: readonly ["0.11.0", '0.11.1', '0.11.2', '0.11.3', '0.12.0', '0.12.1'];
20
20
  export declare const sharedApplicationModuleIdentities: InfrastructureArtifactIdentity[];
21
21
  export declare const retainedInfrastructureIdentities: readonly InfrastructureArtifactIdentity[];
22
22
  export declare const retiredFlatRootInfrastructureIdentities: InfrastructureArtifactIdentity[];
@@ -5,7 +5,8 @@ export const compatibleIndependentInfrastructureGenerationVersions = [
5
5
  '0.11.1',
6
6
  '0.11.2',
7
7
  '0.11.3',
8
- '0.12.0'
8
+ '0.12.0',
9
+ '0.12.1'
9
10
  ];
10
11
  export const sharedApplicationModuleIdentities = [
11
12
  ['opentofu-application-versions', 'versions.tf'],
@@ -1 +1 @@
1
- {"version":3,"file":"infrastructure-layout.js","sourceRoot":"","sources":["../../../src/domain/project/infrastructure-layout.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"infrastructure-layout.js","sourceRoot":"","sources":["../../../src/domain/project/infrastructure-layout.ts"],"names":[],"mappings":"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"}
@@ -6,16 +6,22 @@ export declare const selfUpgradeSchemaVersion: 1;
6
6
  export declare const selfUpgradeInstallTimeoutMs: number;
7
7
  export declare const selfUpgradeProbeTimeoutMs = 30000;
8
8
  export declare const selfUpgradeVerificationTimeoutMs = 15000;
9
+ declare const homebrewPrefixes: {
10
+ readonly 'homebrew-opt': string;
11
+ readonly 'homebrew-usr-local': string;
12
+ };
13
+ export type SelfUpgradeInstallationTarget = keyof typeof homebrewPrefixes;
9
14
  export type SelfUpgradeMode = 'apply' | 'check';
10
15
  export type SelfUpgradeStatus = 'blocked' | 'current' | 'failed' | 'update-available' | 'upgraded';
11
16
  export type SelfUpgradeRegistryKind = 'canonical' | 'configured';
12
- export type SelfUpgradeReasonCode = 'canonical_invalid' | 'canonical_timeout' | 'canonical_unavailable' | 'current' | 'downgrade_refused' | 'invalid_global_root' | 'invalid_package' | 'npm_install_failed' | 'npm_install_timeout' | 'npm_unavailable' | 'registry_invalid' | 'registry_stale' | 'registry_unavailable' | 'unsupported_installation' | 'update_available' | 'upgrade_complete' | 'verification_failed';
17
+ export type SelfUpgradeReasonCode = 'canonical_invalid' | 'canonical_timeout' | 'canonical_unavailable' | 'current' | 'downgrade_refused' | 'invalid_global_root' | 'invalid_package' | 'npm_install_failed' | 'npm_install_timeout' | 'npm_unavailable' | 'registry_invalid' | 'registry_prefix_mismatch' | 'registry_stale' | 'registry_unavailable' | 'unsupported_installation' | 'update_available' | 'upgrade_complete' | 'verification_failed';
13
18
  interface SelfUpgradeResultBase {
14
19
  schemaVersion: typeof selfUpgradeSchemaVersion;
15
20
  mode: SelfUpgradeMode;
16
21
  status: SelfUpgradeStatus;
17
22
  currentVersion: string;
18
23
  reasonCode: SelfUpgradeReasonCode;
24
+ installationTarget?: SelfUpgradeInstallationTarget;
19
25
  }
20
26
  export type SelfUpgradeResult = (SelfUpgradeResultBase & {
21
27
  status: 'current';
@@ -68,7 +74,7 @@ export type ConfiguredRegistryTargetResult = {
68
74
  export type ConfiguredRegistryTargetLookup = (targetVersion: string) => Promise<ConfiguredRegistryTargetResult>;
69
75
  export declare function pathIsContained(root: string, candidate: string, platform: NodeJS.Platform): boolean;
70
76
  export declare function expectedGlobalPackageRoot(globalRoot: string, platform: NodeJS.Platform): string;
71
- export declare function buildGlobalNpmInstallCommand(targetVersion: string, platform: NodeJS.Platform): ExternalCommand;
77
+ export declare function buildGlobalNpmInstallCommand(targetVersion: string, platform: NodeJS.Platform, installationTarget?: SelfUpgradeInstallationTarget): ExternalCommand;
72
78
  export declare function selfUpgradeExitCode(value: SelfUpgradeResult): number;
73
79
  export declare function selfUpgradeRemedy(value: SelfUpgradeResult): string | undefined;
74
80
  export declare function selfUpgradeSummary(value: SelfUpgradeResult): string;
@@ -10,6 +10,10 @@ export const selfUpgradeSchemaVersion = 1;
10
10
  export const selfUpgradeInstallTimeoutMs = 10 * 60_000;
11
11
  export const selfUpgradeProbeTimeoutMs = 30_000;
12
12
  export const selfUpgradeVerificationTimeoutMs = 15_000;
13
+ const homebrewPrefixes = {
14
+ 'homebrew-opt': path.posix.join('/', 'opt', 'homebrew'),
15
+ 'homebrew-usr-local': path.posix.join('/', 'usr', 'local')
16
+ };
13
17
  class SelfUpgradeFailure extends Error {
14
18
  status;
15
19
  reasonCode;
@@ -40,16 +44,25 @@ export function pathIsContained(root, candidate, platform) {
40
44
  export function expectedGlobalPackageRoot(globalRoot, platform) {
41
45
  return pathApiForPlatform(platform).join(globalRoot, ...liftoffPackageName.split('/'));
42
46
  }
43
- export function buildGlobalNpmInstallCommand(targetVersion, platform) {
47
+ export function buildGlobalNpmInstallCommand(targetVersion, platform, installationTarget) {
48
+ return npmCommand(npmExecutableForPlatform(platform), [
49
+ 'install',
50
+ '--global',
51
+ '--ignore-scripts',
52
+ '--no-audit',
53
+ '--no-fund',
54
+ `${liftoffPackageName}@${targetVersion}`
55
+ ], installationTarget);
56
+ }
57
+ function npmCommand(executable, args, installationTarget) {
44
58
  return {
45
- executable: npmExecutableForPlatform(platform),
59
+ executable,
46
60
  args: [
47
- 'install',
48
- '--global',
49
- '--ignore-scripts',
50
- '--no-audit',
51
- '--no-fund',
52
- `${liftoffPackageName}@${targetVersion}`
61
+ ...args,
62
+ ...(installationTarget ? [
63
+ ...(!args.includes('--global') ? ['--global'] : []),
64
+ '--prefix', homebrewPrefixes[installationTarget]
65
+ ] : [])
53
66
  ]
54
67
  };
55
68
  }
@@ -60,6 +73,7 @@ function result(request, status, reasonCode, details = {}) {
60
73
  status,
61
74
  currentVersion: request.currentVersion,
62
75
  reasonCode,
76
+ ...(details.installationTarget ? { installationTarget: details.installationTarget } : {}),
63
77
  ...(details.targetVersion ? { targetVersion: details.targetVersion } : {}),
64
78
  ...(details.registryKind ? { registryKind: details.registryKind } : {})
65
79
  };
@@ -82,6 +96,7 @@ export function selfUpgradeExitCode(value) {
82
96
  }
83
97
  }
84
98
  export function selfUpgradeRemedy(value) {
99
+ const prefix = value.installationTarget ? ` --prefix ${homebrewPrefixes[value.installationTarget]}` : '';
85
100
  switch (value.reasonCode) {
86
101
  case 'current':
87
102
  case 'update_available':
@@ -93,13 +108,13 @@ export function selfUpgradeRemedy(value) {
93
108
  case 'npm_install_timeout':
94
109
  case 'verification_failed':
95
110
  return value.targetVersion
96
- ? `Run the exact repair command manually: ${exactGlobalInstallCommand(value.targetVersion)}`
111
+ ? `Run the exact repair command manually: ${exactGlobalInstallCommand(value.targetVersion)}${prefix}`
97
112
  : undefined;
98
113
  case 'unsupported_installation':
99
114
  case 'invalid_global_root':
100
115
  case 'invalid_package':
101
116
  case 'npm_unavailable':
102
- return `Use a supported global npm installation: ${canonicalManualInstallCommand()}`;
117
+ return `Use a supported global npm installation: ${canonicalManualInstallCommand()}${prefix}`;
103
118
  case 'canonical_invalid':
104
119
  case 'canonical_timeout':
105
120
  case 'canonical_unavailable':
@@ -107,6 +122,8 @@ export function selfUpgradeRemedy(value) {
107
122
  case 'registry_invalid':
108
123
  case 'registry_unavailable':
109
124
  return 'Repair the approved npm registry configuration without placing credentials in the registry URL, then retry.';
125
+ case 'registry_prefix_mismatch':
126
+ return 'The active npm and verified Homebrew prefix select different registries. Reconcile the approved machine-level registry policy before retrying; Liftoff did not switch registries or install.';
110
127
  case 'downgrade_refused':
111
128
  return 'Keep the newer installed CLI; Liftoff does not perform automatic downgrades.';
112
129
  default:
@@ -142,6 +159,77 @@ function commandFailed(command) {
142
159
  command.signal !== null ||
143
160
  command.status !== 0;
144
161
  }
162
+ async function homebrewInstallationTarget(globalRoot, runningRoot, dependencies) {
163
+ if (dependencies.platform !== 'darwin')
164
+ return undefined;
165
+ for (const target of Object.keys(homebrewPrefixes)) {
166
+ const prefix = homebrewPrefixes[target];
167
+ const stableRoot = path.posix.join(prefix, 'lib', 'node_modules');
168
+ if (runningRoot !== expectedGlobalPackageRoot(stableRoot, 'darwin'))
169
+ continue;
170
+ try {
171
+ const executable = await dependencies.realpath(dependencies.execPath);
172
+ const parts = path.posix.relative(prefix, executable).split(path.posix.sep);
173
+ if (parts.length !== 5 || parts[0] !== 'Cellar' || parts[3] !== 'bin' || parts[4] !== 'node' ||
174
+ !/^\d+\.\d+\.\d+(?:_\d+)?$/u.test(parts[2]) ||
175
+ !['node', `node@${parts[2].split('.')[0]}`].includes(parts[1]))
176
+ continue;
177
+ const cellarRoot = path.posix.join(prefix, ...parts.slice(0, 3), 'lib', 'node_modules');
178
+ if (globalRoot !== cellarRoot || await dependencies.realpath(stableRoot) !== stableRoot)
179
+ continue;
180
+ return target;
181
+ }
182
+ catch {
183
+ return undefined;
184
+ }
185
+ }
186
+ return undefined;
187
+ }
188
+ async function assertHomebrewInstallation(installation, version, dependencies) {
189
+ if (!installation.installationTarget)
190
+ return;
191
+ const prefix = homebrewPrefixes[installation.installationTarget];
192
+ const globalRoot = path.posix.join(prefix, 'lib', 'node_modules');
193
+ const packageRoot = expectedGlobalPackageRoot(globalRoot, 'darwin');
194
+ try {
195
+ for (const directory of [prefix, path.posix.join(prefix, 'bin'), globalRoot,
196
+ path.posix.dirname(packageRoot), packageRoot]) {
197
+ const details = await dependencies.lstat(directory);
198
+ if (!details.isDirectory() || details.isSymbolicLink() || await dependencies.realpath(directory) !== directory) {
199
+ throw new Error('Unsafe Homebrew installation directory.');
200
+ }
201
+ }
202
+ const metadataPath = path.posix.join(packageRoot, 'package.json');
203
+ const metadataDetails = await dependencies.lstat(metadataPath);
204
+ if (!metadataDetails.isFile() || metadataDetails.isSymbolicLink()) {
205
+ throw new Error('Unsafe Homebrew package metadata.');
206
+ }
207
+ const metadata = await dependencies.readJson(metadataPath);
208
+ if (!metadata || metadata.name !== liftoffPackageName || metadata.version !== version ||
209
+ !metadata.bin || typeof metadata.bin !== 'object' || Array.isArray(metadata.bin)) {
210
+ throw new Error('Invalid Homebrew package metadata.');
211
+ }
212
+ const declaredBin = metadata.bin[liftoffBinaryName];
213
+ if (typeof declaredBin !== 'string' || !declaredBin || path.posix.isAbsolute(declaredBin)) {
214
+ throw new Error('Invalid Homebrew package binary.');
215
+ }
216
+ const binary = path.posix.resolve(packageRoot, declaredBin);
217
+ const launcher = path.posix.join(prefix, 'bin', liftoffBinaryName);
218
+ if (!pathIsContained(packageRoot, binary, 'darwin')) {
219
+ throw new Error('Escaping Homebrew package binary.');
220
+ }
221
+ const binaryDetails = await dependencies.lstat(binary);
222
+ if (!binaryDetails.isFile() || binaryDetails.isSymbolicLink() ||
223
+ await dependencies.realpath(binary) !== binary ||
224
+ !(await dependencies.lstat(launcher)).isSymbolicLink() ||
225
+ await dependencies.realpath(launcher) !== binary) {
226
+ throw new Error('Homebrew launcher does not identify the running package.');
227
+ }
228
+ }
229
+ catch {
230
+ throw new SelfUpgradeFailure('blocked', 'unsupported_installation');
231
+ }
232
+ }
145
233
  async function inspectGlobalInstallation(request, neutralDirectory, dependencies) {
146
234
  const npmExecutable = npmExecutableForPlatform(dependencies.platform);
147
235
  const rootResult = await dependencies.runner.run({ executable: npmExecutable, args: ['root', '--global'] }, {
@@ -173,12 +261,18 @@ async function inspectGlobalInstallation(request, neutralDirectory, dependencies
173
261
  catch {
174
262
  throw new SelfUpgradeFailure('blocked', 'invalid_global_root');
175
263
  }
176
- const packageRoot = expectedGlobalPackageRoot(globalRoot, dependencies.platform);
264
+ let packageRoot = expectedGlobalPackageRoot(globalRoot, dependencies.platform);
265
+ let installationTarget;
177
266
  if (!pathIsContained(globalRoot, packageRoot, dependencies.platform) ||
178
267
  comparisonPath(packageRoot, dependencies.platform) !==
179
268
  comparisonPath(runningRoot, dependencies.platform)) {
180
- throw new SelfUpgradeFailure('blocked', 'unsupported_installation');
269
+ installationTarget = await homebrewInstallationTarget(globalRoot, runningRoot, dependencies);
270
+ if (!installationTarget)
271
+ throw new SelfUpgradeFailure('blocked', 'unsupported_installation');
272
+ packageRoot = expectedGlobalPackageRoot(path.posix.join(homebrewPrefixes[installationTarget], 'lib', 'node_modules'), 'darwin');
181
273
  }
274
+ const installation = { npmExecutable, packageRoot, ...(installationTarget ? { installationTarget } : {}) };
275
+ await assertHomebrewInstallation(installation, request.currentVersion, dependencies);
182
276
  let packageDetails;
183
277
  let metadata;
184
278
  try {
@@ -199,7 +293,13 @@ async function inspectGlobalInstallation(request, neutralDirectory, dependencies
199
293
  packageMetadata.version !== request.currentVersion) {
200
294
  throw new SelfUpgradeFailure('blocked', 'invalid_package');
201
295
  }
202
- return { npmExecutable, packageRoot };
296
+ if (installationTarget) {
297
+ const confirmedRoot = await npmGlobalRoot(npmExecutable, neutralDirectory, dependencies, installationTarget);
298
+ if (expectedGlobalPackageRoot(confirmedRoot, dependencies.platform) !== packageRoot) {
299
+ throw new SelfUpgradeFailure('blocked', 'unsupported_installation');
300
+ }
301
+ }
302
+ return installation;
203
303
  }
204
304
  function registryKind(value) {
205
305
  let parsed;
@@ -219,16 +319,13 @@ function registryKind(value) {
219
319
  const normalized = parsed.toString().replace(/\/$/, '');
220
320
  return normalized === canonicalNpmRegistry ? 'canonical' : 'configured';
221
321
  }
222
- async function inspectRegistryParity(targetVersion, npmExecutable, neutralDirectory, dependencies, timeoutMs = selfUpgradeProbeTimeoutMs) {
322
+ async function configuredUpgradeRegistry(npmExecutable, neutralDirectory, dependencies, timeoutMs, installationTarget) {
223
323
  const options = {
224
324
  cwd: neutralDirectory,
225
325
  env: readOnlyEnvironment(dependencies, neutralDirectory),
226
326
  timeoutMs
227
327
  };
228
- const scopedRegistryResult = await dependencies.runner.run({
229
- executable: npmExecutable,
230
- args: ['config', 'get', liftoffScopedRegistryKey]
231
- }, options);
328
+ const scopedRegistryResult = await dependencies.runner.run(npmCommand(npmExecutable, ['config', 'get', liftoffScopedRegistryKey], installationTarget), options);
232
329
  if (commandFailed(scopedRegistryResult)) {
233
330
  throw new SelfUpgradeFailure('failed', 'registry_unavailable');
234
331
  }
@@ -237,23 +334,36 @@ async function inspectRegistryParity(targetVersion, npmExecutable, neutralDirect
237
334
  if (configuredRegistry === '' ||
238
335
  configuredRegistry === 'undefined' ||
239
336
  configuredRegistry === 'null') {
240
- const defaultRegistryResult = await dependencies.runner.run({ executable: npmExecutable, args: ['config', 'get', 'registry'] }, options);
337
+ const defaultRegistryResult = await dependencies.runner.run(npmCommand(npmExecutable, ['config', 'get', 'registry'], installationTarget), options);
241
338
  if (commandFailed(defaultRegistryResult)) {
242
339
  throw new SelfUpgradeFailure('failed', 'registry_unavailable');
243
340
  }
244
341
  configuredRegistry = defaultRegistryResult.stdout.trim();
245
342
  }
246
343
  const kind = registryKind(configuredRegistry);
247
- const targetResult = await dependencies.runner.run({
248
- executable: npmExecutable,
249
- args: [
250
- 'view',
251
- `${liftoffPackageName}@${targetVersion}`,
252
- 'name',
253
- 'version',
254
- '--json'
255
- ]
256
- }, options);
344
+ return { url: new URL(configuredRegistry).toString().replace(/\/$/, ''), kind };
345
+ }
346
+ async function inspectRegistryParity(targetVersion, npmExecutable, neutralDirectory, dependencies, timeoutMs = selfUpgradeProbeTimeoutMs, installationTarget) {
347
+ const active = await configuredUpgradeRegistry(npmExecutable, neutralDirectory, dependencies, timeoutMs);
348
+ const delivery = installationTarget
349
+ ? await configuredUpgradeRegistry(npmExecutable, neutralDirectory, dependencies, timeoutMs, installationTarget)
350
+ : active;
351
+ if (delivery.url !== active.url) {
352
+ throw new SelfUpgradeFailure('blocked', 'registry_prefix_mismatch');
353
+ }
354
+ const kind = delivery.kind;
355
+ const options = {
356
+ cwd: neutralDirectory,
357
+ env: readOnlyEnvironment(dependencies, neutralDirectory),
358
+ timeoutMs
359
+ };
360
+ const targetResult = await dependencies.runner.run(npmCommand(npmExecutable, [
361
+ 'view',
362
+ `${liftoffPackageName}@${targetVersion}`,
363
+ 'name',
364
+ 'version',
365
+ '--json'
366
+ ], installationTarget), options);
257
367
  if (commandFailed(targetResult)) {
258
368
  const notFound = targetResult.status === 1 &&
259
369
  /\b(?:E404|404|not found|no match)\b/i.test(targetResult.stderr);
@@ -308,8 +418,8 @@ export async function checkConfiguredRegistryTarget(targetVersion, overrides = {
308
418
  await dependencies.removeNeutralDirectory(neutralDirectory);
309
419
  }
310
420
  }
311
- async function npmGlobalRoot(npmExecutable, neutralDirectory, dependencies) {
312
- const rootResult = await dependencies.runner.run({ executable: npmExecutable, args: ['root', '--global'] }, {
421
+ async function npmGlobalRoot(npmExecutable, neutralDirectory, dependencies, installationTarget) {
422
+ const rootResult = await dependencies.runner.run(npmCommand(npmExecutable, ['root', '--global'], installationTarget), {
313
423
  cwd: neutralDirectory,
314
424
  env: readOnlyEnvironment(dependencies, neutralDirectory),
315
425
  timeoutMs: selfUpgradeProbeTimeoutMs
@@ -328,10 +438,13 @@ async function npmGlobalRoot(npmExecutable, neutralDirectory, dependencies) {
328
438
  throw new SelfUpgradeFailure('failed', 'verification_failed');
329
439
  }
330
440
  }
331
- async function verifyReplacement(targetVersion, npmExecutable, neutralDirectory, dependencies) {
441
+ async function verifyReplacement(targetVersion, installation, neutralDirectory, dependencies) {
332
442
  const pathApi = pathApiForPlatform(dependencies.platform);
333
- const globalRoot = await npmGlobalRoot(npmExecutable, neutralDirectory, dependencies);
443
+ const globalRoot = await npmGlobalRoot(installation.npmExecutable, neutralDirectory, dependencies, installation.installationTarget);
334
444
  const packageRoot = expectedGlobalPackageRoot(globalRoot, dependencies.platform);
445
+ if (comparisonPath(packageRoot, dependencies.platform) !== comparisonPath(installation.packageRoot, dependencies.platform)) {
446
+ throw new SelfUpgradeFailure('failed', 'verification_failed');
447
+ }
335
448
  let packageDetails;
336
449
  let metadata;
337
450
  try {
@@ -348,6 +461,16 @@ async function verifyReplacement(targetVersion, npmExecutable, neutralDirectory,
348
461
  Array.isArray(metadata)) {
349
462
  throw new SelfUpgradeFailure('failed', 'verification_failed');
350
463
  }
464
+ try {
465
+ if (comparisonPath(await dependencies.realpath(packageRoot), dependencies.platform) !==
466
+ comparisonPath(packageRoot, dependencies.platform)) {
467
+ throw new Error('Replacement package escaped its original root.');
468
+ }
469
+ await assertHomebrewInstallation(installation, targetVersion, dependencies);
470
+ }
471
+ catch {
472
+ throw new SelfUpgradeFailure('failed', 'verification_failed');
473
+ }
351
474
  const record = metadata;
352
475
  const bin = record.bin;
353
476
  if (record.name !== liftoffPackageName ||
@@ -419,9 +542,12 @@ export async function runSelfUpgrade(request, overrides = {}) {
419
542
  const neutralDirectory = await dependencies.makeNeutralDirectory();
420
543
  let targetVersion;
421
544
  let registry;
545
+ let installationTarget;
546
+ const finish = (status, reasonCode, details = {}) => result(request, status, reasonCode, { ...details, installationTarget });
422
547
  try {
423
548
  request.onStage?.('Inspect global installation');
424
549
  const installation = await inspectGlobalInstallation(request, neutralDirectory, dependencies);
550
+ installationTarget = installation.installationTarget;
425
551
  request.onStage?.('Resolve canonical stable target');
426
552
  let stable;
427
553
  try {
@@ -429,32 +555,39 @@ export async function runSelfUpgrade(request, overrides = {}) {
429
555
  }
430
556
  catch (error) {
431
557
  if (error instanceof StableReleaseLookupError) {
432
- return result(request, 'failed', canonicalFailureReason(error));
558
+ return finish('failed', canonicalFailureReason(error));
433
559
  }
434
- return result(request, 'failed', 'canonical_unavailable');
560
+ return finish('failed', 'canonical_unavailable');
435
561
  }
436
562
  if (stable.name !== liftoffPackageName || !isStableSemver(stable.version)) {
437
- return result(request, 'failed', 'canonical_invalid');
563
+ return finish('failed', 'canonical_invalid');
438
564
  }
439
565
  targetVersion = stable.version;
440
566
  const comparison = compareSemver(targetVersion, request.currentVersion);
441
567
  if (comparison === 0) {
442
- return result(request, 'current', 'current');
568
+ return finish('current', 'current');
443
569
  }
444
570
  if (comparison < 0) {
445
- return result(request, 'blocked', 'downgrade_refused', { targetVersion });
571
+ return finish('blocked', 'downgrade_refused', { targetVersion });
446
572
  }
447
573
  request.onStage?.('Verify configured registry parity');
448
- const registryInspection = await inspectRegistryParity(targetVersion, installation.npmExecutable, neutralDirectory, dependencies);
574
+ const registryInspection = await inspectRegistryParity(targetVersion, installation.npmExecutable, neutralDirectory, dependencies, selfUpgradeProbeTimeoutMs, installationTarget);
449
575
  registry = registryInspection.kind;
450
576
  if (request.mode === 'check') {
451
- return result(request, 'update-available', 'update_available', {
577
+ return finish('update-available', 'update_available', {
452
578
  targetVersion,
453
579
  registryKind: registry
454
580
  });
455
581
  }
582
+ if (installationTarget) {
583
+ const confirmedRoot = await npmGlobalRoot(installation.npmExecutable, neutralDirectory, dependencies, installationTarget);
584
+ if (expectedGlobalPackageRoot(confirmedRoot, dependencies.platform) !== installation.packageRoot) {
585
+ throw new SelfUpgradeFailure('blocked', 'unsupported_installation');
586
+ }
587
+ await assertHomebrewInstallation(installation, request.currentVersion, dependencies);
588
+ }
456
589
  request.onStage?.('Install exact Liftoff release', targetVersion);
457
- const installCommand = buildGlobalNpmInstallCommand(targetVersion, dependencies.platform);
590
+ const installCommand = buildGlobalNpmInstallCommand(targetVersion, dependencies.platform, installationTarget);
458
591
  request.onInstallCommand?.(installCommand);
459
592
  const installResult = await dependencies.runner.run(installCommand, {
460
593
  cwd: neutralDirectory,
@@ -465,34 +598,34 @@ export async function runSelfUpgrade(request, overrides = {}) {
465
598
  stderr: request.stderr
466
599
  });
467
600
  if (installResult.timedOut) {
468
- return result(request, 'failed', 'npm_install_timeout', {
601
+ return finish('failed', 'npm_install_timeout', {
469
602
  targetVersion,
470
603
  registryKind: registry
471
604
  });
472
605
  }
473
606
  if (commandFailed(installResult)) {
474
- return result(request, 'failed', 'npm_install_failed', {
607
+ return finish('failed', 'npm_install_failed', {
475
608
  targetVersion,
476
609
  registryKind: registry
477
610
  });
478
611
  }
479
612
  request.onStage?.('Verify replacement', targetVersion);
480
- await verifyReplacement(targetVersion, installation.npmExecutable, neutralDirectory, dependencies);
481
- return result(request, 'upgraded', 'upgrade_complete', {
613
+ await verifyReplacement(targetVersion, installation, neutralDirectory, dependencies);
614
+ return finish('upgraded', 'upgrade_complete', {
482
615
  targetVersion,
483
616
  registryKind: registry
484
617
  });
485
618
  }
486
619
  catch (error) {
487
620
  if (error instanceof SelfUpgradeFailure) {
488
- return result(request, error.status, error.reasonCode, {
621
+ return finish(error.status, error.reasonCode, {
489
622
  ...(targetVersion ? { targetVersion } : {}),
490
623
  ...(registry ?? error.registryKind
491
624
  ? { registryKind: registry ?? error.registryKind }
492
625
  : {})
493
626
  });
494
627
  }
495
- return result(request, 'failed', 'verification_failed', {
628
+ return finish('failed', 'verification_failed', {
496
629
  ...(targetVersion ? { targetVersion } : {}),
497
630
  ...(registry ? { registryKind: registry } : {})
498
631
  });
@@ -1 +1 @@
1
- {"version":3,"file":"self-upgrade.js","sourceRoot":"","sources":["../src/self-upgrade.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"self-upgrade.js","sourceRoot":"","sources":["../src/self-upgrade.ts"],"names":[],"mappings":"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"}
@@ -276,6 +276,13 @@ Automatic replacement is refused for local dependencies, `npx` execution-cache
276
276
  copies, linked checkouts, unknown package-manager stores, ambiguous roots, or
277
277
  unsafe paths.
278
278
 
279
+ On macOS, a verified global installation at the standard Homebrew prefix can
280
+ remain eligible when Homebrew Node/npm reports its versioned Cellar prefix.
281
+ Liftoff checks the package, runtime layout, and launcher, then explicitly targets
282
+ that existing prefix throughout the upgrade. It rejects a prefix-specific
283
+ registry change instead of silently switching delivery policy. This fallback
284
+ does not apply to arbitrary prefixes, Windows, or Linux.
285
+
279
286
  Canonical npm's stable `latest` metadata selects one exact target. The effective
280
287
  configured npm registry remains the delivery path and must expose that exact
281
288
  version. Liftoff never edits `.npmrc`, embeds registry credentials, forces a
@@ -297,7 +304,9 @@ command printed by Liftoff.
297
304
 
298
305
  JSON results use schema version 1 and expose only `mode`, `status`,
299
306
  `currentVersion`, applicable `targetVersion`, applicable `registryKind`, and a
300
- stable `reasonCode`. Status is one of `current`, `update-available`, `upgraded`,
307
+ stable `reasonCode`, plus optional `installationTarget` (`homebrew-opt` or
308
+ `homebrew-usr-local`) when the standard Homebrew fallback is verified. Arbitrary
309
+ installation paths are not included. Status is one of `current`, `update-available`, `upgraded`,
301
310
  `blocked`, or `failed`. Child progress goes to stderr so stdout remains one JSON
302
311
  object.
303
312
 
@@ -210,7 +210,7 @@ comparisons to infer execution safety.
210
210
 
211
211
  | Contract | Current version |
212
212
  | --- | --- |
213
- | CLI package version | 0.12.0 |
213
+ | CLI package version | 0.12.1 |
214
214
  | Activation package identity | 0.12.0 |
215
215
  | Manifest write / supported reads | 7 / 2-7 for API and GenAI |
216
216
  | Normative policy | 6 |
@@ -221,10 +221,10 @@ comparisons to infer execution safety.
221
221
  | Phase graph, supersession, credential policy | 1 |
222
222
  | Assessment report and control catalog | 1 |
223
223
 
224
- Liftoff 0.12.0 advances the activation contract, state, evidence header, and approval
225
- envelope to version 3, and compatibility metadata to schema version 4, covering the
224
+ Liftoff 0.12.1 retains the activation contract, state, evidence header, and approval
225
+ envelope at version 3, and compatibility metadata at schema version 4, covering the
226
226
  29-phase canonical phase graph. Independent infrastructure provenance
227
- explicitly recognizes generation versions 0.11.0, 0.11.1, 0.11.2, 0.11.3, and 0.12.0,
227
+ explicitly recognizes generation versions 0.11.0, 0.11.1, 0.11.2, 0.11.3, 0.12.0, and 0.12.1,
228
228
  including mixed component histories; unknown releases are not automatically
229
229
  trusted or treated as compatible. The mandatory preview/approval workflow and
230
230
  schema-3 update reports remain unchanged.
@@ -26,12 +26,42 @@ npm install -g @msn-control/liftoff@latest
26
26
 
27
27
  ## CLI upgrade is blocked by installation origin
28
28
 
29
- Automatic replacement supports only the canonical package at npm's effective
30
- global package root. A local dependency, `npx` cache copy, linked checkout, or
29
+ Automatic replacement supports the canonical package at npm's effective
30
+ global package root or an independently verified standard Homebrew prefix on
31
+ macOS. A local dependency, `npx` cache copy, linked checkout, or
31
32
  another package-manager installation is intentionally refused. Use the manual
32
33
  global npm command shown by Liftoff; do not try to make upgrade replace a
33
34
  different installation.
34
35
 
36
+ ### Homebrew Node and npm report a different prefix
37
+
38
+ A Homebrew Node installation can report a versioned Cellar global root while
39
+ Liftoff remains installed under `/opt/homebrew/lib/node_modules` (Apple Silicon)
40
+ or `/usr/local/lib/node_modules` (Intel). This is an installation-prefix mismatch,
41
+ not a project-directory or PATH-refresh problem.
42
+
43
+ The patched upgrader verifies the running package, matching Homebrew Node/npm
44
+ layout, and global launcher before targeting the existing prefix. Registry
45
+ checks, installation, and replacement verification retain that target. It
46
+ neither installs another copy in the Cellar nor edits `.npmrc`. If prefix-specific
47
+ registry settings differ, `registry_prefix_mismatch` blocks the operation rather
48
+ than silently bypassing a managed mirror.
49
+
50
+ Older binaries, including 0.11.3 and 0.12.0, still need the one-time workaround.
51
+ Only after confirming that `liftoff` resolves under `/opt/homebrew/lib/node_modules`,
52
+ run:
53
+
54
+ ```bash
55
+ npm_config_prefix=/opt/homebrew liftoff upgrade --check
56
+ npm_config_prefix=/opt/homebrew liftoff upgrade
57
+ liftoff --version
58
+ ```
59
+
60
+ For a verified Intel Homebrew installation use `/usr/local` instead. The
61
+ environment assignment applies only to that invocation. Do not use it to force
62
+ replacement of a local, linked, or unrelated installation. Keep your approved
63
+ registry policy; a blocked mirror still requires its owner's intervention.
64
+
35
65
  ## CLI upgrade is blocked by a stale managed registry
36
66
 
37
67
  Canonical npm defines the exact stable target, but Liftoff installs through the
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@msn-control/liftoff",
3
- "version": "0.12.0",
3
+ "version": "0.12.1",
4
4
  "description": "Interactive CLI for governed GenAI applications and APIs.",
5
5
  "type": "module",
6
6
  "license": "GPL-3.0-only",