koala73/worldmonitor · error

${parts.join('\n')}

Error message

${parts.join('\n')}

What it means

After comparing committed filter patterns with expected patterns, runCheck throws an error whose message is the assembled diff report: missing entries, extra entries (up to 20 shown), and counts. This is the drift signal — the committed generated file does not match what generation would now produce.

Solutions

  1. Run `npm run generate:sentry-convex-probe-filters` and commit the updated list.
  2. Review the missing/extra entries in the message to confirm the intended function changes.
  3. Never hand-edit the generated file; fix the source of truth (Convex function definitions) instead.

Example fix

// before
// committed list still contains module:oldFunction after rename
// after
npm run generate:sentry-convex-probe-filters
git commit -am "regenerate sentry convex probe filters"
Defensive patterns

Strategy: validation

Validate before calling

// pre-commit or CI step
// npm run generate:sentry-convex-probe-filters && git diff --exit-code -- <generated-list-path>

Try / catch

try { runCheck(patterns); } catch (err) { console.error(err.message); process.exit(1); } // message already is the diff report

Prevention

When it happens

Trigger: Running check mode when the committed list differs from freshly computed patterns: a public Convex function was added/removed/renamed without regenerating, or the committed file was hand-edited.

Common situations: A PR renamed a public function but the author forgot to run the generator; a merge kept an outdated committed list; someone edited the generated file manually.

Understand the failure class

Background: Schema validation failed / invalid input schema: payload rejected because its shape doesn't match the expected schema — this error's family across 28 libraries.

Related errors


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

Appendix: source

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

    return;
  }

  const parts = [
    'Committed Sentry Convex probe filter list drifted from convex/ source.',
    `  File: ${relativeToRepo(COMMITTED_LIST_PATH)}`,
    '  Run: npm run generate:sentry-convex-probe-filters',
  ];
  if (missing.length > 0) {
    parts.push(`  Missing (${missing.length}):`);
    for (const line of missing.slice(0, 20)) parts.push(`    + ${line}`);
    if (missing.length > 20) parts.push(`    … and ${missing.length - 20} more`);
  }
  if (extra.length > 0) {
    parts.push(`  Extra (${extra.length}):`);
    for (const line of extra.slice(0, 20)) parts.push(`    - ${line}`);
    if (extra.length > 20) parts.push(`    … and ${extra.length - 20} more`);
  }
  throw new Error(parts.join('\n'));
}

/**
 * Merge generated patterns into live Sentry filters, PUT, and read back.
 *
 * @param {string[]} patterns
 * @param {{ dryRun: boolean }} opts
 */
async function runApply(patterns, opts) {
  const token = resolveToken();
  if (!token) {
    throw new Error(
      'Set SENTRY_API_TOKEN (or SENTRY_AUTH_TOKEN / SENTRY_SESSION_TOKEN) to a '
        + 'sntryu_ user token with project:read and project:write.',
    );
  }
  const org = process.env.SENTRY_ORG || DEFAULT_ORG;
  const project = process.env.SENTRY_PROJECT || DEFAULT_PROJECT;

View on GitHub (pinned to e586b8b4b8)