santifer/career-ops · error · SeedError

INVALID_DATE

INVALID_DATE

Error message

Application #${row?.num ?? '?'} notes carry an impossible "Applied ${notesDate}" date; fix the notes or pass --date

What it means

Error "Application #${row?.num ?? '?'} notes carry an impossible "Applied ${notesDate}" date; fix the notes or pass --date" thrown in santifer/career-ops.

Source

Thrown at followup-seed.mjs:135

 * order: explicit `--date` > "Applied YYYY-MM-DD" in the tracker row's notes >
 * today. The tracker's `date` column is never consulted — it is usually the
 * evaluation date, not the submission date (see followup-cadence.mjs).
 *
 * A notes date that isn't a real calendar date (e.g. "Applied 2026-02-31")
 * throws rather than falling through: `parseDate` would return null for it and
 * the pin would be written with a literal "null" next-date.
 *
 * @param {{num?: number, notes?: string}} row - Parsed tracker row (or any object with `notes`).
 * @param {string|null|undefined} explicitDate - `--date` value, already validated.
 * @returns {string} YYYY-MM-DD
 * @throws {SeedError} INVALID_DATE when the notes carry an impossible date.
 */
export function resolveAppliedDate(row, explicitDate) {
  if (explicitDate) return explicitDate;
  const notesDate = parseAppliedDate(row?.notes);
  if (notesDate) {
    if (!isValidCalendarDate(notesDate)) {
      throw new SeedError('INVALID_DATE', `Application #${row?.num ?? '?'} notes carry an impossible "Applied ${notesDate}" date; fix the notes or pass --date`);
    }
    return notesDate;
  }
  return todayStr();
}

/**
 * Format one pin directive line. The parser side lives in
 * followup-cadence.mjs's `OVERRIDE_RE` / `parseNextOverrides`.
 *
 * @param {number} appNum
 * @param {string} nextDate - YYYY-MM-DD
 * @param {string} setDate - YYYY-MM-DD
 * @returns {string}
 */
export function formatPinLine(appNum, nextDate, setDate) {
  return `- next #${appNum} ${nextDate} (set ${setDate})`;
}

View on GitHub (pinned to 9b17a8ac97)

Solutions

  1. Correct the impossible 'Applied <date>' note in applications.md so it is not in the future.
  2. Or pass --date explicitly to override the seeded follow-up date.

Example fix

node followup-seed.mjs 42 --date 2026-08-10

When it happens

Trigger: Thrown at followup-seed.mjs:135 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of santifer/career-ops@9b17a8ac97 (2026-08-13). Data as JSON: /api/errors/35d7fe68aada8eeb. Report an issue: GitHub.