From b095ddeb696ffa415dbd9ede812227719d811721 Mon Sep 17 00:00:00 2001 From: gsxdsm Date: Tue, 11 Aug 2026 17:04:28 -0700 Subject: [PATCH] fix: exclude gitignored desktop deploy staging from workspace package-graph check The check-workspace-package-graph validator globs the filesystem for package manifests but only excluded node_modules/dist. On any machine that had run a desktop packaging build (pnpm deploy), the gitignored electron-builder staging dir packages/desktop/deploy/ carries a copy of desktop's package.json and tripped the unglobbed-package violation, breaking pretest/gate locally while CI (clean checkout, no deploy dir) stayed green. Exclude the staging path alongside node_modules/dist since a gitignored dir is absent from the isolated worktree this validator guards. --- scripts/check-workspace-package-graph.mjs | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/scripts/check-workspace-package-graph.mjs b/scripts/check-workspace-package-graph.mjs index e0ac474c87..60a5cf0a89 100644 --- a/scripts/check-workspace-package-graph.mjs +++ b/scripts/check-workspace-package-graph.mjs @@ -13,7 +13,18 @@ import { parse as parseYaml } from "yaml"; export const DEPENDENCY_BLOCKS = ["dependencies", "devDependencies", "peerDependencies", "optionalDependencies"]; const PACKAGE_DIRECTORY_PREFIXES = ["packages/", "plugins/"]; -const EXCLUDED_PACKAGE_PATHS = ["**/node_modules/**", "**/dist/**"]; +/* +FNXC:WorkspaceBootstrap 2026-08-09-17:05: +Exclude build-artifact directories that only exist locally, never in a cold +checkout. `packages/desktop/deploy/` is the gitignored electron-builder staging +closure produced by `@fusion/desktop build` (pnpm deploy) and carries a copy of +desktop's package.json; without this exclusion its manifest tripped the +unglobbed-package violation on any machine that had run a desktop packaging build, +breaking pretest/gate locally while CI (clean checkout, no deploy dir) stayed green. +A gitignored dir is absent from the isolated worktree this validator guards, so it +is correctly out of scope alongside node_modules/dist. +*/ +const EXCLUDED_PACKAGE_PATHS = ["**/node_modules/**", "**/dist/**", "packages/desktop/deploy/**"]; function isWorkspaceProtocol(value) { return typeof value === "string" && value.startsWith("workspace:");