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

  1. Confirm the corpus width range overlaps `--start`/`--end`/`--samples` so the widths list is non-empty.
  2. Re-run; if persistent, open the `/corpus?id=...&widths=...&diagnostic=full&report=1` URL headed and inspect console errors.
  3. 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

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


AI-assisted analysis of chenglou/pretext@ac49b09b7d (2026-08-12). Data as JSON: /api/errors/3f2d2daad6473b6d. Report an issue: GitHub.