chenglou/pretext · error · Error
Corpus taxonomy report was missing rows for ${meta.id}
Error message
Corpus taxonomy report was missing rows for ${meta.id} What it means
Guard after the taxonomy report loads: status is not 'error' but `report.rows` is undefined. It prevents classifying a payload-less report as 'all exact'.
Source
Thrown at scripts/corpus-taxonomy.ts:237
const report = await (async () => {
try {
return await loadPostedReport(
session,
url,
() => reportServer.waitForReport(null),
requestId,
browser,
timeoutMs,
)
} finally {
reportServer.close()
}
})()
if (report.status === 'error') {
throw new Error(`Corpus page returned error for ${meta.id}: ${report.message ?? 'unknown error'}`)
}
if (report.rows === undefined) {
throw new Error(`Corpus taxonomy report was missing rows for ${meta.id}`)
}
for (const row of report.rows) {
const diffPx = Math.round(row.diffPx)
if (diffPx === 0) continue
entries.push({
width: row.width,
diffPx,
category: classifyTaxonomy(row),
reason: row.firstBreakMismatch?.reasonGuess ?? 'no break diagnostic',
deltaText: row.firstBreakMismatch?.deltaText ?? '',
})
}
printEntries(entries)
} finally {
session.close()View on GitHub (pinned to ac49b09b7d)
Solutions
- Confirm the corpus width range overlaps `--start`/`--end`/`--samples` so the widths list is non-empty.
- Re-run; if persistent, open the `/corpus?id=...&widths=...&diagnostic=full&report=1` URL headed and inspect console errors.
- Raise `--timeout` so a slow measurement completes before posting.
Example fix
// before: corpus bounds exclude the whole target range
// sources.json: { "id": "x", "min_width": 950 }
bun run scripts/corpus-taxonomy.ts --id=x --start=300 --end=900
// after
bun run scripts/corpus-taxonomy.ts --id=x --start=900 --end=1200 Defensive patterns
Strategy: retry
Validate before calling
const widths = getTargetWidths(meta, start, end, step, samples)
if (widths.length === 0) {
console.error(`No widths in range for ${meta.id}; adjust --start/--end/--samples`)
process.exit(0)
} Prevention
- Confirm corpus min_width/max_width overlaps your target range/sample before running.
- Keep --timeout generous so the page attaches rows before posting.
- Inspect the headed /corpus URL when a ready-but-rowless report persists.
When it happens
Trigger: The `/corpus` page posts `{status:'ready'}` with no `rows` — e.g., the widths list was empty after clamping, or the POST side channel truncated the payload.
Common situations: Corpus `min_width`/`max_width` clamps the range to nothing; transport truncation; a stale page build that doesn't attach rows.
Related errors
- Corpus font matrix report was missing rows for ${meta.id} ($
- Corpus sweep report was missing rows for ${corpusId}
- Corpus page returned error for ${meta.id}: ${report.message
- corpus-check exited with status ${result.status ?? 'unknown'
- Corpus page returned error for ${meta.id}: ${report.message
AI-assisted analysis of chenglou/pretext@ac49b09b7d (2026-08-12).
Data as JSON: /api/errors/3f2d2daad6473b6d.
Report an issue: GitHub.