windmill-labs/windmill · warning

Warning: ${normalizedPath} depends on something inside "${fo

Error message

Warning: ${normalizedPath} depends on something inside "${folder}" but is outside it — skipped due to --strict-folder-boundaries. Next generate-metadata will not detect it as stale.

What it means

With `--strict-folder-boundaries`, `generateMetadata` only includes stale items inside the given folder, even if an item outside the folder transitively depends on something inside it. Each such excluded stale importer is warned about, because the next run will not see it as stale and it can silently keep outdated metadata.

Source

Thrown at cli/src/commands/generate-metadata/generate-metadata.ts:646

    const isRelevant = (item: StaleItem) => {
      if (isInsideFolder(item)) return true;
      if (item.type === "dependencies") return true;
      const treePath = (item.type === "script"
        ? item.path.replace(/\.[^/.]+$/, "")
        : item.folder).replaceAll("\\", "/");
      return touchesFolder(treePath);
    };

    if (opts.strictFolderBoundaries) {
      // Strict mode: only items inside the folder
      filteredItems = staleItems.filter(isInsideFolder);

      // Warn about stale items outside the folder that would be included by default
      const excludedStale = staleItems.filter((item) => !isInsideFolder(item) && isRelevant(item) && item.type !== "dependencies");
      for (const item of excludedStale) {
        const normalizedPath = item.path.replaceAll("\\", "/");
        log.warn(colors.yellow(
          `Warning: ${normalizedPath} depends on something inside "${folder}" but is outside it — skipped due to --strict-folder-boundaries. Next generate-metadata will not detect it as stale.`
        ));
      }
    } else {
      // Default: include items inside the folder and any stale importers that transitively depend on it
      filteredItems = staleItems.filter(isRelevant);
    }
  }

  // === Show stale items and confirm ===
  if (filteredItems.length === 0) {
    log.info(colors.green("All metadata up-to-date"));
    // Turning `dedupeLockfiles` on in a repo whose metadata is already current
    // is exactly the case where nothing is stale, and the conversion still has
    // to happen — the sync compares against a deduplicated remote either way.
    await maybeDedupeLockfiles(opts, workspace, codebases, ignore, rawWorkspaceDependencies, tree, folder);
    return;
  }

View on GitHub (pinned to e474e8803c)

Solutions

  1. Drop `--strict-folder-boundaries` so transitive stale importers are included.
  2. Run generate-metadata again per consuming folder, or once without the folder flag to cover everything.
  3. Restructure so the dependency lives with its consumers (or in a folder that is generated together).
  4. Treat the warning as a checklist: manually regenerate metadata for each listed path.

Example fix

// before: outside importer skipped, stays stale
wmill generate-metadata --folder u/shared --strict-folder-boundaries
// after: include transitive stale importers
wmill generate-metadata --folder u/shared
Defensive patterns

Strategy: validation

Validate before calling

// before using --strict-folder-boundaries, find cross-folder importers
import fg from 'fast-glob';
const outside = (await fg(['**/*.script.ts', '**/*.flow.yaml'], { ignore: [`'${folder}'/**`] }))
  .filter(f => readFileSync(f, 'utf8').includes(folder));
if (outside.length) console.warn('outside-folder importers:', outside); // run without the flag or per folder

Type guard

null

Try / catch

null

Prevention

When it happens

Trigger: Running `wmill generate-metadata --folder <folder> --strict-folder-boundaries` when a script/flow/app outside the folder depends on a stale item inside it; the outside item is filtered out of the update set.

Common situations: Monorepos partitioned by folder where cross-folder imports exist (shared utils referenced from sibling folders); team splits a repo and moves consumers out of a folder; shared dependency folder with consumers across the tree.

Related errors


AI-assisted analysis of windmill-labs/windmill@e474e8803c (2026-09-03). Data as JSON: /api/errors/9a28a9441a3811b1. Report an issue: GitHub.