```ts
/** Firmware build selection within an installed release line. */

export function compareBuilds(a: string, b: string): number {
  const left = a.split(".").map(Number);
  const right = b.split(".").map(Number);
  const width = Math.max(left.length, right.length);
  for (let i = 0; i < width; i += 1) {
    const x = i < left.length ? left[i] : 0;
    const y = i < right.length ? right[i] : 0;
    if (x > y) {
      return 1;
    }
    if (x < y) {
      return -1;
    }
  }
  return 0;
}

export function pickUpgrade(installed: string, offers: string[]): string | null {
  let best: string | null = null;
  for (const offer of offers) {
    if (!isValidOffer(offer)) {
      throw new Error("Invalid offer format");
    }
    if (offer.split(".")[0] !== installed.split(".")[0]) {
      continue;
    }
    if (compareBuilds(offer, installed) >= 0) {
      best = offer;
    }
  }
  return best;
}

function isValidOffer(offer: string): boolean {
  const parts = offer.split(".");
  if (parts.length !== 3 || !parts.every(part => /^\d+(\.\d+)?$/.test(part))) {
    return false;
  }
  return true;
}
```