koala73/worldmonitor · error

Generated internal probe filters incorrectly cover public…

Error message

Generated internal probe filters incorrectly cover public function(s): ${collisions.join(', ')}. Deploy-skew visibility for removed public names would be lost.

What it means

assertPublicFunctionsRemainVisible checks that the generated internal-probe filter patterns do not match any still-public Convex function names. If a generated 'missing public function' pattern would collide with an actual public function, the script throws because deploy-skew probes for that removed name would hide errors from a function that still exists.

Solutions

  1. Regenerate the filter list with `npm run generate:sentry-convex-probe-filters` so removed-function patterns reflect current code.
  2. Rename the newly added public function to something that doesn't collide with a removed-name pattern.
  3. Remove the stale removed-function entry if the function has actually been restored to public visibility.

Example fix

// before (stale generated entry claims myModule:oldName was removed, but it is public again)
// after
// rm the stale removed-public-function record or rename the function, then:
// npm run generate:sentry-convex-probe-filters && npm run check:sentry-convex-probe-filters
Defensive patterns

Strategy: validation

Validate before calling

// before applying, regenerate and diff
// npm run generate:sentry-convex-probe-filters && git diff --exit-code <generated-list>

Prevention

When it happens

Trigger: The generated pattern list (from convexMissingPublicFunctionPattern for removed/renamed public functions) contains a pattern identical to one for a moduleRef:name entry that is currently still public — typically after renaming a function back or re-adding a name that was previously removed.

Common situations: A Convex public function was renamed, then an engineer reused the old name (or reverted a rename) while the stale generated probe-filter list was still committed; running the sync script or its check mode detects the collision.

Understand the failure class

Background: "This is a bug, please report it": internal invariant violations, unreachable panics, and SNH errors explained — this error's family across 47 libraries.

Related errors


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

Appendix: source

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

/**
 * Assert the safety half of the invariant: no *public* Convex function name
 * is covered by the generated internal filter set. A removed/renamed public
 * call must still report (deploy-skew visibility).
 *
 * @param {string} convexRoot
 * @param {string[]} internalPatterns
 */
export function assertPublicFunctionsRemainVisible(convexRoot, internalPatterns) {
  const patternSet = new Set(internalPatterns);
  const collisions = [];
  for (const entry of listPublicConvexFunctionExports(convexRoot)) {
    const pattern = convexMissingPublicFunctionPattern(entry.moduleRef, entry.name);
    if (patternSet.has(pattern)) {
      collisions.push(`${entry.moduleRef}:${entry.name}`);
    }
  }
  if (collisions.length > 0) {
    throw new Error(
      'Generated internal probe filters incorrectly cover public function(s): '
        + `${collisions.join(', ')}. Deploy-skew visibility for removed public `
        + 'names would be lost.',
    );
  }
}

/**
 * @param {string[]} patterns
 * @returns {string}
 */
export function formatCommittedFilterList(patterns) {
  const header = [
    '# Generated by scripts/sync-sentry-convex-probe-filters.mjs --write',
    '# Do not edit by hand. Source of truth: convex/ internal{Query,Mutation,Action} exports.',
    '# Each line is a Sentry filters:error_messages glob for case-1 Convex probe noise.',
    '# Public function names are intentionally absent — deploy-skew must still report.',
    '#',

View on GitHub (pinned to e586b8b4b8)