windmill-labs/windmill · error · Error

No resource metadata file found for fileset resource: ${chan

Error message

No resource metadata file found for fileset resource: ${change.path}

What it means

During `wmill sync push`, when a change is a child file of a fileset resource, the CLI must sync the parent resource metadata file that carries the whole fileset. If syncing that parent reports status "parent-missing", the CLI throws this error: the child change cannot be pushed on its own because no resource metadata file exists for it (locally or remotely).

Source

Thrown at cli/src/commands/sync/sync.ts:5798

                  log.info(
                    `Editing ${getTypeStrFromPath(change.path)} ${change.path}`,
                  );
                }
              }
              // Fileset routing must precede the single-file check (as it does
              // in the added/deleted branches): a fileset accepts arbitrary
              // child names, so a child like `<res>.fileset/q.resource.file.sql`
              // matches both predicates and belongs to its fileset parent.
              if (isFilesetResource(change.path)) {
                const result = await pushFilesetParentResource(
                  change.path,
                  workspace.workspaceId,
                  alreadySynced,
                  cachedWsNameForPush,
                  specificItems,
                );
                if (result.status === "parent-missing") {
                  throw new Error(
                    `No resource metadata file found for fileset resource: ${change.path}`,
                  );
                }
                // Pushed or already-synced: the parent resource carries the
                // whole fileset, so this child's content is on the remote.
                if (stateTarget) {
                  await writeFile(stateTarget, change.after, "utf-8");
                }
                continue;
              }
              if (isFileResource(change.path)) {
                const resourceFilePath = await findResourceFile(change.path);
                if (!alreadySynced.includes(resourceFilePath)) {
                  alreadySynced.push(resourceFilePath);

                  const newObj = parseFromPath(
                    resourceFilePath,
                    await readTextFile(resourceFilePath),

View on GitHub (pinned to e474e8803c)

Solutions

  1. Restore or re-generate the parent resource metadata file for that fileset (re-run `wmill sync pull` for that path)
  2. Ensure the whole fileset directory, including its metadata file, is committed to git
  3. Exclude the orphaned child file if it is not wanted, then push
  4. Create the parent resource via the UI/CLI first, then sync pull to regenerate metadata

Example fix

// before: pushing orphaned child
filesets/myapp/index.html  (parent myapp.resource.json deleted)
// after: regenerate parent then push
wmill sync pull --include-skip > /dev/null && wmill sync push
Defensive patterns

Strategy: validation

Validate before calling

import fs from "fs";
import path from "path";
function hasParentMetadata(childPath: string): boolean {
  const dir = path.dirname(childPath);
  return fs.readdirSync(dir).some(f => f.endsWith(".resource.json") || f.endsWith(".resource.yaml"));
}

Try / catch

try {
  await wmill.sync.push(opts);
} catch (e) {
  if (String(e.message).startsWith("No resource metadata file found")) {
    await wmill.sync.pull({ includeSiblings: true }); // regenerate parent
  }
}

Prevention

When it happens

Trigger: `wmill sync push` encounters a change.path pointing at a file inside a fileset (e.g. an app sub-file), and the parent resource metadata (the `.resource.json`-style manifest for the fileset) is absent, so the sync helper returns parent-missing.

Common situations: Hand-deleting or renaming the parent metadata file in the sync folder, pulling a partial workspace, or git commits that excluded the parent file while keeping children.

Related errors


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