# TIP Lane Detangling And Disk-Safe Refresh Date: 2026-05-06 UTC ## Summary `TIP_LLM` was still contaminated by blog/writer behavior even though lane-specific counts were already separated in MAGATAMA. The problem was not only UI-level status, but the actual lane corpus feeding the RunPod export. The lane was rebuilt and revalidated locally, then synced to Erik and refreshed there. The result is that `TIP_LLM` now uses a much smaller but correctly aligned research/network corpus instead of silently inheriting FO_Blog-like behavior. ## Root Cause - The canonical `training-data/gitea-learning-pool/tip_llm/*.jsonl` pool still contained many blog-shaped rows from shared transceiver corpora. - The old TIP export sampled thousands of rows whose prompts/messages still looked like: - `You are an expert technical writer...` - publication-ready/blog instructions - A direct local check on the pre-fix TIP export showed: - `6250` train rows - `6087` matched blog/writer patterns ## Changes Applied ### `scripts/runpod_dataset_builder.ts` - Added a stricter `tipDatasetAllowed(...)` gate. - Tightened `laneRecordIsCompatible(...)` for `tip_llm`. - Tightened `lanePoolMessagesAlign(...)` for `tip_llm`: - reject: - `blog writer` - `publication-ready` - `technical writer specializing` - article-outline/founder/blog prompts - markdown-article assistant outputs - TIP registry fallback now only considers lane-compatible datasets. ### `scripts/sync_gitea_training_pool.ts` - Applied the same stricter TIP lane-alignment logic. - Stopped rewriting redundant `merged.jsonl` copies for: - `fo_blogllm` - `tip_llm` - This was necessary because the duplicated merged artifacts caused local disk exhaustion during refresh. ## Disk Incident During the first rebuild after the lane hardening, refresh failed with: - `ENOSPC: no space left on device` The immediate cause was writing: - `training-data/gitea-learning-pool/tip_llm/merged.jsonl` Fix: - truncated redundant `merged` artifacts for `fo_blogllm` and `tip_llm` - changed sync logic so those duplicates are no longer recreated Result: - free disk space recovered from roughly `377Mi` to `17Gi` ## Verified Local Result After rebuild: - `TIP_LLM` - `train = 233` - `eval = 26` - `total = 259` - `blog/writer matches = 0` First rows now use the intended TIP instruction style: - `You are TIP_LLM, a research and market-intelligence analyst for transceivers, switches, and vendor ecosystems...` This confirms the lane is no longer silently shaped like FO_Blog. ## Synced To Erik Synced: - updated scripts: - `runpod_dataset_builder.ts` - `sync_gitea_training_pool.ts` - `submit_runpod_training.ts` - rebuilt lane exports: - `training-data/runpod/magatamallm/*` - `training-data/runpod/fo_blogllm/*` - `training-data/runpod/tip_llm/*` Then reran on Erik: - `pnpm training:refresh-all` ## Live Erik / Public API Result ### `magatamallm` - `datasetSource = url` - `collectedExamples = 15679` - `evalExamples = 1743` - `totalExamples = 17422` - `newSinceLastTraining = 15679` ### `fo_blogllm` - `datasetSource = url` - `collectedExamples = 17322` - `evalExamples = 1926` - `totalExamples = 19254` - `neverTrained = true` ### `tip_llm` - `datasetSource = url` - `collectedExamples = 231` - `evalExamples = 26` - `totalExamples = 257` - `neverTrained = true` ## Remaining Work The next remaining hard blocker is no longer lane contamination. It is now: - RunPod artifact validation/adoption Desired next step: 1. only accept RunPod `COMPLETED` as success if a real artifact exists 2. verify artifact importability 3. update/adopt local Ollama tag automatically 4. switch MAGATAMA only after successful adoption 5. run pre/post smoke prompts