```ts
/**
 * Calculates the total weighted score for a course based on the syllabus categories.
 * @param categories - An array of category objects defining the syllabus.
 * @returns The total weighted score in basis points.
 */
export function courseWeightTotal(categories: Array<Record<string, unknown>>): number {
  if (categories.length === 0) {
    throw new Error("Empty syllabus");
  }

  const labelSet = new Set<string>();
  let totalWeight = 0;

  for (const category of categories) {
    const label = category.label as string;
    const weight = category.weight as number;
    const items = category.items as Array<[number, number]>;

    if (!label || typeof label !== "string") {
      throw new Error("Invalid category label");
    }
    if (labelSet.has(label)) {
      throw new Error("Duplicate category label");
    }
    labelSet.add(label);

    if (!Number.isInteger(weight) || weight < 0) {
      throw new Error("Invalid category weight");
    }
    totalWeight += weight;

    if (items.length === 0) {
      throw new Error("Category has no items");
    }

    let earnedPoints = 0;
    let totalWorth = 0;

    for (const [earned, worth] of items) {
      if (!Number.isInteger(earned) || !Number.isInteger(worth) || worth <= 0) {
        throw new Error("Invalid item worth");
      }
      if (earned < 0 || earned > worth) {
        throw new Error("Invalid earned points");
      }
      earnedPoints += earned;
      totalWorth += worth;
    }

    const contribution = Math.floor((weight * earnedPoints) / totalWorth);
    totalWeight += contribution;
  }

  if (totalWeight !== 10000) {
    throw new Error("Weights do not add up to exactly 10000");
  }

  return totalWeight;
}
```