{"record":{"id":"298747a8b8e19652","repo":"koala73/worldmonitor","slug":"missing-relativetorepo-committed-list-path-run-npm-run","errorCode":null,"errorMessage":"Missing ${relativeToRepo(COMMITTED_LIST_PATH)}. Run `npm run generate:sentry-convex-probe-filters`.","messagePattern":"Missing (.+?)\\. Run `npm run generate:sentry-convex-probe-filters`\\.","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"scripts/sync-sentry-convex-probe-filters.mjs","lineNumber":349,"sourceCode":"  mkdirSync(dirname(COMMITTED_LIST_PATH), { recursive: true });\n  writeFileSync(COMMITTED_LIST_PATH, formatCommittedFilterList(patterns), 'utf8');\n  console.log(\n    `Wrote ${patterns.length} internal probe filter pattern(s) to `\n      + `${relativeToRepo(COMMITTED_LIST_PATH)}`,\n  );\n}\n\n/**\n * Fail when the committed filter list drifts from current convex/ internals.\n *\n * @param {string[]} patterns\n */\nfunction runCheck(patterns) {\n  let committedText;\n  try {\n    committedText = readFileSync(COMMITTED_LIST_PATH, 'utf8');\n  } catch {\n    throw new Error(\n      `Missing ${relativeToRepo(COMMITTED_LIST_PATH)}. `\n        + 'Run `npm run generate:sentry-convex-probe-filters`.',\n    );\n  }\n  const committed = parseCommittedFilterList(committedText);\n  const expected = patterns;\n  const expectedSet = new Set(expected);\n  const committedSet = new Set(committed);\n\n  const missing = expected.filter((line) => !committedSet.has(line));\n  const extra = committed.filter((line) => !expectedSet.has(line));\n\n  if (missing.length === 0 && extra.length === 0) {\n    console.log(\n      `check:sentry-convex-probe-filters: PASS — ${expected.length} internal `\n        + 'pattern(s) match source; public functions remain unfiltered.',\n    );\n    return;","sourceCodeStart":331,"sourceCodeEnd":367,"githubUrl":"https://github.com/koala73/worldmonitor/blob/e586b8b4b80f595aa7ece295eec10d76f2921240/scripts/sync-sentry-convex-probe-filters.mjs#L331-L367","documentation":"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.","triggerScenarios":"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.","commonSituations":"Fresh clone where the developer skipped the generate step, .gitignore accidentally excluding the generated file, or running check before any apply/generate run.","solutions":["Run `npm run generate:sentry-convex-probe-filters` to create the list, then commit it.","Verify the file exists at the path reported in the error.","Check .gitignore rules are not excluding the generated artifact."],"exampleFix":"// before\nnpm run check:sentry-convex-probe-filters   // fails: file missing\n// after\nnpm run generate:sentry-convex-probe-filters\ngit add <generated-list-path>\nnpm run check:sentry-convex-probe-filters","handlingStrategy":"validation","validationCode":"import { existsSync } from 'node:fs';\nif (!existsSync(COMMITTED_LIST_PATH)) throw new Error('Run npm run generate:sentry-convex-probe-filters first');","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Add the generate step to setup/bootstrap instructions for new clones.","Commit the generated list so it always exists in the repo.","Ensure .gitignore does not exclude the artifact."],"tags":["file-not-found","code-generation","ci"],"backgroundTag":"file-not-found","analyzedSha":"e586b8b4b80f595aa7ece295eec10d76f2921240","analyzedAt":"2026-09-22T01:50:49.965Z","contentChangedAt":"2026-09-22T01:50:49.965Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}