# 2026-04-29 TIPLLM Robot Learning Handoff ## Summary Rene requested that TIP crawler/robot planning use TIPLLM only, no external AI layer, and that crawler/robot experience be written into a Gitea training pool so TIPLLM improves over time. Implemented locally and synced to Erik: - Verification robot controller with safe profiles: - `erik-safe` - `pi-fetch` - `proxmox-heavy` - TIPLLM planning mode: - `--tipllm-plan --limit=N` - Robot experience writer: - status snapshots - TIPLLM plans - queue dry-runs - queue enqueues - rejected queue plans - future crawler results - Learning pool import: - `TIP_TRAINING_REPO/qa-pairs/**/*.jsonl` is imported into the `tip_llm` lane by `learning-pool:build`. ## Safety Choices - Default robot profile is `erik-safe`. - `erik-safe` is capped to 3 lightweight queues by default. - Playwright and discovery queues are excluded from `erik-safe`. - No crawler jobs were started during this work. - No queue waves were enqueued during this work. ## Training Pool The local Gitea training pool clone already existed at `/tmp/tip-training-data`. A first robot experience was written and pushed: ```text f1c83f8 crawl: add robot-status training records [2026-04-29T20:11:24.091Z] ``` ## Erik Synced code/docs to `/opt/tip` and ran the scraper TypeScript build. The build initially failed because two stale misplaced remote-only duplicate files existed on Erik: - `/opt/tip/packages/scraper/src/scrapers/scheduler.ts` - `/opt/tip/packages/scraper/src/vendor-discovery-crawler.ts` They were not present locally and had wrong relative imports. Removed only those duplicates. Build passed after that. PM2 services were left running and were not restarted. ## Commands To Start Safely ```bash npm run robots:verification -w packages/scraper -- --status npm run robots:verification -w packages/scraper -- --tipllm-plan --limit=3 npm run robots:verification -w packages/scraper -- --enqueue=details-fast-lane --profile=erik-safe --dry-run ```