{"record":{"id":"71012cc3bad2397d","repo":"santifer/career-ops","slug":"pendingtsvs-pending-tsvs-in-tracker-additions","errorCode":null,"errorMessage":"${pendingTsvs} pending TSVs in tracker-additions/ (not merged)","messagePattern":"(.+?) pending TSVs in tracker-additions/ \\(not merged\\)","errorType":"console","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"verify-pipeline.mjs","lineNumber":220,"sourceCode":"let badRows = 0;\nfor (const line of lines) {\n  if (!line.startsWith('|')) continue;\n  if (isSeparatorRow(line) || isHeaderRow(line)) continue;\n  const parts = line.split('|');\n  if (parts.length <= MAX_IDX) {\n    error(`Row with too few columns (need ${MAX_IDX} data cols): ${line.substring(0, 80)}...`);\n    badRows++;\n  }\n}\nif (badRows === 0) ok('All rows properly formatted');\n\n// --- Check 6: Pending TSVs ---\nlet pendingTsvs = 0;\nif (existsSync(ADDITIONS_DIR)) {\n  const files = readdirSync(ADDITIONS_DIR).filter(f => f.endsWith('.tsv'));\n  pendingTsvs = files.length;\n  if (pendingTsvs > 0) {\n    warn(`${pendingTsvs} pending TSVs in tracker-additions/ (not merged)`);\n  }\n}\nif (pendingTsvs === 0) ok('No pending TSVs');\n\n// --- Check 7: Bold in scores ---\nlet boldScores = 0;\nfor (const e of entries) {\n  if (e.score.includes('**')) {\n    warn(`#${e.num}: Score has markdown bold: \"${e.score}\"`);\n    boldScores++;\n  }\n}\nif (boldScores === 0) ok('No bold in scores');\n\n// --- Check 8: Stale report-number sentinels (GC) ---\n// reserve-report-num.mjs drops NNN-RESERVED.md files in reports/ when a\n// number is claimed.  If the process crashed before writing the real report\n// and deleting the sentinel it will linger.  Sentinels older than 4 h are","sourceCodeStart":202,"sourceCodeEnd":238,"githubUrl":"https://github.com/santifer/career-ops/blob/e7abd431fce9348a95261acac9e0c14779c35df8/verify-pipeline.mjs#L202-L238","documentation":"A warning from verify-pipeline.mjs (Check 6) reporting that batch/tracker-additions/ contains TSV files that have not been merged into data/applications.md. The TSV-inbox workflow requires running merge-tracker.mjs after each batch of evaluations; unmerged TSVs mean the tracker is out of sync with completed evaluations.","triggerScenarios":"Running `node verify-pipeline.mjs` while batch/tracker-additions/*.tsv files exist — i.e. evaluations were produced (each writing one TSV) but `node merge-tracker.mjs` was never run, or merge was interrupted before consuming them.","commonSituations":"A batch run crashed after writing TSVs but before merging; forgetting the 'run merge-tracker.mjs after each batch' rule; parallel workers left TSVs behind after a failed reservation release; cleaning git status and skipping the merge step.","solutions":["Run `node merge-tracker.mjs` to merge all pending TSVs into the tracker.","Re-run `node verify-pipeline.mjs` afterwards to confirm the inbox is empty.","If a TSV is malformed (missing header, ambiguous score), fix it per the header rules then re-merge — merge-tracker skips invalid files loudly.","Add merge-tracker.mjs to the end of every batch script/prompt so the inbox never accumulates."],"exampleFix":"// before: leaving the batch script at evaluation only\nnode batch-eval.mjs\n// after\nnode batch-eval.mjs && node merge-tracker.mjs && node verify-pipeline.mjs","handlingStrategy":"validation","validationCode":"const pending = existsSync(ADDITIONS_DIR)\n  ? readdirSync(ADDITIONS_DIR).filter(f => f.endsWith('.tsv'))\n  : [];\nif (pending.length > 0) await run('node merge-tracker.mjs');","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Chain `node merge-tracker.mjs` onto every batch/evaluation script.","Check verify-pipeline.mjs output at session end; an empty tracker-additions/ inbox is the clean state.","Investigate and fix malformed TSVs immediately — skipped files linger in the inbox."],"tags":["pipeline","tracker","unmerged-data","workflow"],"backgroundTag":"unmerged-pending-changes","analyzedSha":"e7abd431fce9348a95261acac9e0c14779c35df8","analyzedAt":"2026-09-16T06:35:29.214Z","contentChangedAt":"2026-09-16T06:35:29.214Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}