koala73/worldmonitor · error

Missing . Run `npm run…

Error message

Missing ${relativeToRepo(COMMITTED_LIST_PATH)}. Run `npm run generate:sentry-convex-probe-filters`.

What it means

runCheck reads the committed generated filter list from disk; when the file is absent it throws with the repo-relative path and the exact generator command to run. The check mode requires the generated artifact to be committed so CI can verify it matches what generation would produce.

Solutions

  1. Run `npm run generate:sentry-convex-probe-filters` to create the list, then commit it.
  2. Verify the file exists at the path reported in the error.
  3. Check .gitignore rules are not excluding the generated artifact.

Example fix

// before
npm run check:sentry-convex-probe-filters   // fails: file missing
// after
npm run generate:sentry-convex-probe-filters
git add <generated-list-path>
npm run check:sentry-convex-probe-filters
Defensive patterns

Strategy: validation

Validate before calling

import { existsSync } from 'node:fs';
if (!existsSync(COMMITTED_LIST_PATH)) throw new Error('Run npm run generate:sentry-convex-probe-filters first');

Prevention

When it happens

Trigger: Running the check mode (e.g. `check:sentry-convex-probe-filters`) when COMMITTED_LIST_PATH does not exist in the repo — the list was never generated, was deleted, or lives outside the working tree.

Common situations: Fresh clone where the developer skipped the generate step, .gitignore accidentally excluding the generated file, or running check before any apply/generate run.

Understand the failure class

Background: "File not found" and ENOENT errors: why libraries can't find a file that should exist — this error's family across 50 libraries.

Related errors


AI-assisted analysis of koala73/worldmonitor@e586b8b4b8 (2026-09-22). Data as JSON: /api/errors/298747a8b8e19652. Report an issue: GitHub.

Appendix: source

Thrown at scripts/sync-sentry-convex-probe-filters.mjs:349

  mkdirSync(dirname(COMMITTED_LIST_PATH), { recursive: true });
  writeFileSync(COMMITTED_LIST_PATH, formatCommittedFilterList(patterns), 'utf8');
  console.log(
    `Wrote ${patterns.length} internal probe filter pattern(s) to `
      + `${relativeToRepo(COMMITTED_LIST_PATH)}`,
  );
}

/**
 * Fail when the committed filter list drifts from current convex/ internals.
 *
 * @param {string[]} patterns
 */
function runCheck(patterns) {
  let committedText;
  try {
    committedText = readFileSync(COMMITTED_LIST_PATH, 'utf8');
  } catch {
    throw new Error(
      `Missing ${relativeToRepo(COMMITTED_LIST_PATH)}. `
        + 'Run `npm run generate:sentry-convex-probe-filters`.',
    );
  }
  const committed = parseCommittedFilterList(committedText);
  const expected = patterns;
  const expectedSet = new Set(expected);
  const committedSet = new Set(committed);

  const missing = expected.filter((line) => !committedSet.has(line));
  const extra = committed.filter((line) => !expectedSet.has(line));

  if (missing.length === 0 && extra.length === 0) {
    console.log(
      `check:sentry-convex-probe-filters: PASS — ${expected.length} internal `
        + 'pattern(s) match source; public functions remain unfiltered.',
    );
    return;

View on GitHub (pinned to e586b8b4b8)