{"record":{"id":"4d10b0016d14af68","repo":"chenglou/pretext","slug":"unknown-corpus-id-available-corpora-sources-4d10b0","errorCode":null,"errorMessage":"Unknown corpus ${id}. Available corpora: ${sources.map(source => source.id).join(', ')}","messagePattern":"Unknown corpus (.+?)\\. Available corpora: (.+?)","errorType":"validation","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"scripts/corpus-taxonomy.ts","lineNumber":192,"sourceCode":"\nconst browser = parseBrowser(parseStringFlag('browser'))\nconst requestedPort = parseNumberFlag('port', Number.parseInt(process.env['CORPUS_CHECK_PORT'] ?? '0', 10))\nconst timeoutMs = parseNumberFlag('timeout', Number.parseInt(process.env['CORPUS_CHECK_TIMEOUT_MS'] ?? '180000', 10))\nconst start = parseNumberFlag('start', 300)\nconst end = parseNumberFlag('end', 900)\nconst step = parseNumberFlag('step', 10)\nconst samples = parseOptionalNumberFlag('samples')\nconst font = parseStringFlag('font')\nconst lineHeight = parseOptionalNumberFlag('lineHeight')\nconst id = parseStringFlag('id')\n\nconst sources = await loadSources()\nif (id === null) {\n  throw new Error(`Missing --id. Available corpora: ${sources.map(source => source.id).join(', ')}`)\n}\nconst meta = sources.find(source => source.id === id)\nif (meta === undefined) {\n  throw new Error(`Unknown corpus ${id}. Available corpora: ${sources.map(source => source.id).join(', ')}`)\n}\n\nconst widths = getTargetWidths(meta, start, end, step, samples)\nconst lock = await acquireBrowserAutomationLock(browser)\nconst session = createBrowserSession(browser)\nlet serverProcess: ChildProcess | null = null\n\ntry {\n  const port = await getAvailablePort(requestedPort === 0 ? null : requestedPort)\n  const pageServer = await ensurePageServer(port, '/corpus', process.cwd())\n  serverProcess = pageServer.process\n  const baseUrl = `${pageServer.baseUrl}/corpus`\n  const entries: TaxonomyEntry[] = []\n\n  console.log(`${meta.id} (${meta.language}) — ${meta.title}`)\n  const requestId = `${Date.now()}-${meta.id}-${Math.random().toString(36).slice(2)}`\n  const reportServer = await startPostedReportServer<CorpusSweepReport>(requestId)\n  let url =","sourceCodeStart":174,"sourceCodeEnd":210,"githubUrl":"https://github.com/chenglou/pretext/blob/ac49b09b7d83ede19581fa94a8b892b07d309baf/scripts/corpus-taxonomy.ts#L174-L210","documentation":"`--id` was supplied to the taxonomy script but no entry in `corpora/sources.json` matches it. The error lists valid ids.","triggerScenarios":"`--id=ja-kumo` (typo/truncation) or an id renamed/removed from sources.json.","commonSituations":"Typo; stale command after a corpus rename; sources.json out of sync.","solutions":["Copy a valid id verbatim from the error's list.","If the id should exist, inspect `corpora/sources.json` for a rename or missing entry."],"exampleFix":"// before\nbun run scripts/corpus-taxonomy.ts --id=ja-kumo\n// after\nbun run scripts/corpus-taxonomy.ts --id=ja-kumo-no-ito","handlingStrategy":"validation","validationCode":"const validIds = new Set(sources.map(s => s.id))\nif (id !== null && !validIds.has(id)) {\n  console.error(`Unknown corpus ${id}. Available: ${[...validIds].join(', ')}`)\n  process.exit(2)\n}","typeGuard":"const isKnownCorpus = (id: string, sources: CorpusMeta[]): id is string =>\n  sources.some(s => s.id === id)","tryCatchPattern":null,"preventionTips":["Copy corpus ids verbatim from sources.json.","Re-check ids after a corpus rename."],"tags":["cli","validation","corpus","config","taxonomy"],"backgroundTag":null,"analyzedSha":"ac49b09b7d83ede19581fa94a8b892b07d309baf","analyzedAt":"2026-08-12T17:03:16.263Z","schemaVersion":2},"datasetVersion":"2026-08-12T18:17:37.767Z"}