@rightkit/release 0.6.2 → 0.6.3

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.
Binary file
package/build-release.mjs CHANGED
@@ -18,7 +18,7 @@ import {
18
18
  writeFileSync,
19
19
  } from "node:fs";
20
20
  import path from "node:path";
21
- import { iosOwnershipScope } from "./ownership-scope.mjs";
21
+ import { preflightOwnershipScope } from "./ownership-scope.mjs";
22
22
  import { spawn, spawnSync } from "./background-process.mjs";
23
23
  import { RightKitRegistryError, SNAPSHOT_ENV, SNAPSHOT_FILE, assertManifestRegistryEvidence, loadAdmittedSnapshot, prepareRightKitResolution, registryManifestFields, rightKitLockInventory, writeAdmissionRecord } from "./rightkit-registry-resolver.mjs";
24
24
  import { fileURLToPath, pathToFileURL } from "node:url";
@@ -84,7 +84,7 @@ function buildPreflight({ config, configPath, appRoot, repoRoot, platform, nativ
84
84
  version = undefined;
85
85
  }
86
86
  // An iOS target is built from its Xcode project and local packages only; the ownership scan covers just those roots.
87
- const ownershipScope = platform === "ios" ? iosOwnershipScope({ repoRoot, appRoot, target, nativeAssembly: config?.nativeAssembly }) : null;
87
+ const ownershipScope = preflightOwnershipScope({ repoRoot, appRoot, platform, target, nativeAssembly: config?.nativeAssembly });
88
88
  return collectPreflight({
89
89
  platform,
90
90
  ownershipScope,
@@ -87,6 +87,15 @@ export function iosOwnershipScope({ repoRoot, appRoot, target, nativeAssembly })
87
87
  return [...new Set([...checked, OWNERSHIP_SCOPE_ALWAYS])].sort();
88
88
  }
89
89
 
90
+ /**
91
+ * The one place the doctor (`releasePreflight`) and the build (`buildPreflight`) assemble the ownership scan scope, so the
92
+ * two can never disagree about what ships (rightkit#927). iOS builds from its Xcode project and local packages only; every
93
+ * other platform scans the whole repository (null).
94
+ */
95
+ export function preflightOwnershipScope({ repoRoot, appRoot, platform, target, nativeAssembly }) {
96
+ return platform === "ios" ? iosOwnershipScope({ repoRoot, appRoot, target, nativeAssembly }) : null;
97
+ }
98
+
90
99
  /** Repository-relative file or directory under any scope root (null scope = everything). */
91
100
  export function inOwnershipScope(scope, rel) {
92
101
  if (!scope) return true;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rightkit/release",
3
- "version": "0.6.2",
3
+ "version": "0.6.3",
4
4
  "description": "Portable release CLI/SDK with fail-closed public GitHub Releases and private R2 + RightApps distribution.",
5
5
  "license": "MIT OR Apache-2.0",
6
6
  "type": "module",
package/preflight.mjs CHANGED
@@ -193,6 +193,7 @@ export function collectPreflight({
193
193
  ownership = true,
194
194
  ownershipEvidenceFactory = createOwnershipEvidence,
195
195
  ownershipScope = null,
196
+ ownershipScopeError = null,
196
197
  runtimeBudgetAdoption = appRuntimeBudgetAdoptionCheck,
197
198
  freeDisk = freeDiskGb,
198
199
  projectType,
@@ -333,7 +334,10 @@ export function collectPreflight({
333
334
  if (adoption) checks.push(adoption);
334
335
  }
335
336
 
336
- if (repoRoot && ownership) {
337
+ if (repoRoot && ownership && ownershipScopeError) {
338
+ // The target's scan scope could not be determined (the build refuses the same config): fail closed, never scan wider.
339
+ checks.push(fail("ownership", `ownership scope refused: ${ownershipScopeError}`, "fix the target's ownership scope configuration; the build refuses it too"));
340
+ } else if (repoRoot && ownership) {
337
341
  // An app living inside the RightKit workspace repository is scoped to its own directory.
338
342
  const workspace = existsSync(path.join(repoRoot, "tools", "rightkit", "packages", "release"));
339
343
  checks.push(ownershipCheck(repoRoot, { scanRoot: workspace && appRoot ? appRoot : repoRoot, scope: ownershipScope, evidenceFactory: ownershipEvidenceFactory }));
package/release.mjs CHANGED
@@ -50,7 +50,7 @@ import { assertReleaseDependencies } from "./release-dependencies.mjs";
50
50
  import { assertNoForbiddenBuildFeatures } from "./qa-build-features.mjs";
51
51
  import { expandRecipeBuildCommands } from "./recipe-build.mjs";
52
52
  import { assertNoReleaseSwitches, commandTokens, localCrateDirsFromTree, resolveFeatureClosure, shippedRustTriples } from "./release-switch-scan.mjs";
53
- import { iosOwnershipScope } from "./ownership-scope.mjs";
53
+ import { iosOwnershipScope, preflightOwnershipScope } from "./ownership-scope.mjs";
54
54
  import { devtoolsEvidence, resolveDevtoolsAllowance } from "./devtools-policy.mjs";
55
55
  import { runAndroidRelease, validateAndroidTarget } from "./android-release.mjs";
56
56
  import { runIosPackageRecipe } from "./ios-package-recipe.mjs";
@@ -348,8 +348,19 @@ function releasePreflight({ config, configPath, root, repoRoot, platform, native
348
348
  ...pinnedCargoLocks,
349
349
  ...(config.cargoLocks ?? []).map((entry) => path.resolve(root, entry)),
350
350
  ].filter((entry, index, entries) => entries.indexOf(entry) === index);
351
+ // Same scope the build uses (rightkit#927): an iOS target is checked over its Xcode project and local packages only.
352
+ // The doctor reports a refused scope as an ownership FAIL (never a crash, never a whole-repo scan); the build still throws.
353
+ let ownershipScope = null;
354
+ let ownershipScopeError = null;
355
+ try {
356
+ ownershipScope = preflightOwnershipScope({ repoRoot, appRoot: root, platform, target: projectTarget, nativeAssembly: config.nativeAssembly });
357
+ } catch (error) {
358
+ ownershipScopeError = error instanceof Error ? error.message : String(error);
359
+ }
351
360
  return collectPreflight({
352
361
  platform,
362
+ ownershipScope,
363
+ ownershipScopeError,
353
364
  appRoot: root,
354
365
  repoRoot,
355
366
  app: config.app,
@@ -32,7 +32,7 @@
32
32
  "@rightkit/qa": "0.6.1",
33
33
  "@rightkit/qa-chrome": "0.1.11",
34
34
  "@rightkit/react-shell": "0.7.2",
35
- "@rightkit/release": "0.6.2",
35
+ "@rightkit/release": "0.6.3",
36
36
  "@rightkit/settings-ui": "0.7.0",
37
37
  "@rightkit/tauri": "0.3.0",
38
38
  "@rightkit/tauri-shell": "0.1.2",
@@ -228,7 +228,8 @@
228
228
  "0.5.0",
229
229
  "0.5.1",
230
230
  "0.6.0",
231
- "0.6.1"
231
+ "0.6.1",
232
+ "0.6.2"
232
233
  ],
233
234
  "@rightkit/qa": [
234
235
  "0.1.0",
@@ -441,7 +442,7 @@
441
442
  "rightkit-asr": "0.3.0",
442
443
  "rightkit-audio": "0.3.1",
443
444
  "rightkit-automation": "0.6.0",
444
- "rightkit-browser": "0.3.5",
445
+ "rightkit-browser": "0.3.6",
445
446
  "rightkit-cache": "0.2.3",
446
447
  "rightkit-channel-memory": "0.2.1",
447
448
  "rightkit-child-process": "0.5.5",
@@ -451,7 +452,7 @@
451
452
  "rightkit-credentials": "0.4.2",
452
453
  "rightkit-crypto": "0.1.0",
453
454
  "rightkit-daemon": "0.4.0",
454
- "rightkit-db": "0.5.1",
455
+ "rightkit-db": "0.5.2",
455
456
  "rightkit-device": "0.4.0",
456
457
  "rightkit-docs": "0.1.2",
457
458
  "rightkit-embed": "0.6.1",
@@ -524,7 +525,7 @@
524
525
  "rightkit-asr": "0.3.0",
525
526
  "rightkit-audio": "0.3.1",
526
527
  "rightkit-automation": "0.6.0",
527
- "rightkit-browser": "0.3.5",
528
+ "rightkit-browser": "0.3.6",
528
529
  "rightkit-cache": "0.2.3",
529
530
  "rightkit-channel-memory": "0.2.1",
530
531
  "rightkit-child-process": "0.5.5",
@@ -535,7 +536,7 @@
535
536
  "rightkit-credentials": "0.4.2",
536
537
  "rightkit-crypto": "0.1.0",
537
538
  "rightkit-daemon": "0.4.0",
538
- "rightkit-db": "0.5.1",
539
+ "rightkit-db": "0.5.2",
539
540
  "rightkit-device": "0.4.0",
540
541
  "rightkit-docs": "0.1.2",
541
542
  "rightkit-embed": "0.6.1",
@@ -622,7 +623,7 @@
622
623
  "@rightkit/qa": "0.6.1",
623
624
  "@rightkit/qa-chrome": "0.1.11",
624
625
  "@rightkit/react-shell": "0.7.2",
625
- "@rightkit/release": "0.6.1",
626
+ "@rightkit/release": "0.6.2",
626
627
  "@rightkit/settings-ui": "0.7.0",
627
628
  "@rightkit/shell": "0.1.1",
628
629
  "@rightkit/tauri": "0.3.0",
@@ -644,7 +645,8 @@
644
645
  "0.2.2",
645
646
  "0.3.0",
646
647
  "0.3.1",
647
- "0.3.4"
648
+ "0.3.4",
649
+ "0.3.5"
648
650
  ],
649
651
  "rightkit-models": [
650
652
  "0.2.1",
@@ -672,7 +674,8 @@
672
674
  "0.3.0",
673
675
  "0.3.1",
674
676
  "0.4.0",
675
- "0.4.3"
677
+ "0.4.3",
678
+ "0.5.1"
676
679
  ],
677
680
  "rightkit-embed": [
678
681
  "0.2.1",