{"record":{"id":"35d7fe68aada8eeb","repo":"santifer/career-ops","slug":"invalid-date","errorCode":"INVALID_DATE","errorMessage":"Application #${row?.num ?? '?'} notes carry an impossible \"Applied ${notesDate}\" date; fix the notes or pass --date","messagePattern":"Application #(.+?) notes carry an impossible \"Applied (.+?)\" date; fix the notes or pass --date","errorType":"validation","errorClass":"SeedError","httpStatus":null,"severity":"error","filePath":"followup-seed.mjs","lineNumber":135,"sourceCode":" * order: explicit `--date` > \"Applied YYYY-MM-DD\" in the tracker row's notes >\n * today. The tracker's `date` column is never consulted — it is usually the\n * evaluation date, not the submission date (see followup-cadence.mjs).\n *\n * A notes date that isn't a real calendar date (e.g. \"Applied 2026-02-31\")\n * throws rather than falling through: `parseDate` would return null for it and\n * the pin would be written with a literal \"null\" next-date.\n *\n * @param {{num?: number, notes?: string}} row - Parsed tracker row (or any object with `notes`).\n * @param {string|null|undefined} explicitDate - `--date` value, already validated.\n * @returns {string} YYYY-MM-DD\n * @throws {SeedError} INVALID_DATE when the notes carry an impossible date.\n */\nexport function resolveAppliedDate(row, explicitDate) {\n  if (explicitDate) return explicitDate;\n  const notesDate = parseAppliedDate(row?.notes);\n  if (notesDate) {\n    if (!isValidCalendarDate(notesDate)) {\n      throw new SeedError('INVALID_DATE', `Application #${row?.num ?? '?'} notes carry an impossible \"Applied ${notesDate}\" date; fix the notes or pass --date`);\n    }\n    return notesDate;\n  }\n  return todayStr();\n}\n\n/**\n * Format one pin directive line. The parser side lives in\n * followup-cadence.mjs's `OVERRIDE_RE` / `parseNextOverrides`.\n *\n * @param {number} appNum\n * @param {string} nextDate - YYYY-MM-DD\n * @param {string} setDate - YYYY-MM-DD\n * @returns {string}\n */\nexport function formatPinLine(appNum, nextDate, setDate) {\n  return `- next #${appNum} ${nextDate} (set ${setDate})`;\n}","sourceCodeStart":117,"sourceCodeEnd":153,"githubUrl":"https://github.com/santifer/career-ops/blob/9b17a8ac97b398a496b38e423ae24e433b43254f/followup-seed.mjs#L117-L153","documentation":"Error \"Application #${row?.num ?? '?'} notes carry an impossible \"Applied ${notesDate}\" date; fix the notes or pass --date\" thrown in santifer/career-ops.","triggerScenarios":"Thrown at followup-seed.mjs:135 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Correct the impossible 'Applied <date>' note in applications.md so it is not in the future.","Or pass --date explicitly to override the seeded follow-up date."],"exampleFix":"node followup-seed.mjs 42 --date 2026-08-10","handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"9b17a8ac97b398a496b38e423ae24e433b43254f","analyzedAt":"2026-08-13T00:48:39.135Z","schemaVersion":2},"datasetVersion":"2026-08-13T04:17:16.726Z"}