{
  "framework": "@oh-my-pi/pi-coding-agent@18.15.0",
  "mode": "LIVE_OPENGATEWAY",
  "task": "# Zadanie: łańcuch wyjść przez dwa kolejne drzwi (Luna 5.6)\n\nCel misji: otwórz widoczne drzwi, przejedź całą obwiednią do następnego pomieszczenia, **następnie** w nowym pomieszczeniu znajdź inne drzwi, otwórz je i wejdź do kolejnego pomieszczenia. Zastosuj procedurę exit-room-mcp (kontrakt + sequence) dla **każdego** przejścia osobno.\n\nStart: kalibrowany fixture przy drzwiach gabinetu `g_office` (pierwszy portal). Po VERIFY pierwszego przejścia kontynuuj w tej samej sesji — nie kończ raportem po jednym progu.\n\n## Pętla na drzwi N = 1, potem N = 2\n\nDla każdego portalu: DISCOVER → SURVEY → SWEEP_CHECK → REACH → GRASP → PRESS → OPEN → RELEASE → RETREAT → STOW → LOWER → CROSS → VERIFY.\n\nPo VERIFY drzwi 1:\n1. Zapisz w mission_memory: door_id, observation_id VERIFY, czy crossed_threshold.\n2. W nowym pomieszczeniu rozglądaj się (`robot_look` + krótkie `robot_move_base` przy stowed arm, lift=0, lidar).\n3. Wybierz **inne** widoczne `door_handle` / `door_leaf` niż właśnie przekroczone (nie wracaj przez te same drzwi, chyba że to jedyna droga i operator nie zabronił — tu zabronione: szukaj kolejnego wyjścia).\n4. Powtórz pełną procedurę dla drzwi 2, potem VERIFY.\n\nSukces misji: dwa razy `crossed_threshold` (dwa różne portale) z dowodem obserwacyjnym. Częściowy: jeden crossed + drugi opened_but_not_exited / blocked — raportuj uczciwie.\n\n## Samokorekta (analizuj błąd → popraw → wznów)\n\nPo każdej komendzie: observe, sprawdź `status`, `stop_latched`, TCP, lift, siłę, lidar. Zanim zgłosisz blocked, zapisz: co poszło nie tak, jaka hipoteza, jaka korekta.\n\nDozwolone odzyskiwanie **tylko gdy `stop_latched=false`**:\n- brak `handle_candidate_m` / kadr zasłonięty skrzydłem → cofnij bazę, zmień look (tilt≈0), ponów SURVEY;\n- `grasp` rejected bez ruchu → max 2 korekty z nowej obserwacji (nie zgaduj kierunku z samej odległości);\n- `incomplete_motion` przy open → release jeśli door_held, stow, lift=0, offset bazy w stronę zawiasu (poza łuk), ponów SWEEP_CHECK→OPEN raz;\n- baza `rejected` (arm_not_stowed / lift) → stow + lower, observe, powtórz jazdę;\n- CROSS zablokowany lidar/przeszkodą → inna boczna linia w otworze, krótsze kroki; nie forsuj dx przez kolizję.\n\n**Twarde przerwanie (interrupted):** `stop_latched=true`, `collision_guard` / `force_stop` / `stopped` z zatrzaskiem, błąd transportu o nieznanym wyniku. Nie resetuj stopu. Nie ponawiaj ślepo tej samej komendy.\n\nBudżet: do ~100 komend ruchu łącznie na oba portale; krótkie skrypty ≤6 literalnych wywołań; jeden niepewny ruch na sekwencję.\n\n## Raport końcowy (PL)\n\nDla drzwi 1 i 2 osobno: door_id, etapy ukończone, pull/push jeśli znane, opening_progress, czy crossed_threshold, observation_id VERIFY, korekty wykonane. Status misji: `two_rooms_crossed` | `one_room_crossed` | `opened_but_not_exited` | `blocked` | `interrupted`.",
  "skill": "door-exit-ground",
  "skill_sha256": "e9a5d358460f5f77c5c0ceb275e62529e2c411eda85f5599265e3516ed8540a4",
  "model": "openai/gpt-5.6-luna",
  "baseUrl": "https://openrouter.ai/api/v1",
  "profile": "gpu",
  "seed": 7,
  "memory": "/home/pawel/Documents/HomeBot_Projekt_Domu/homebot-dom/runs/omp-door-chain-luna56-001/memory.json",
  "limits": {
    "tools": 400,
    "sequences": 120,
    "requests": 200,
    "seconds": 3600
  },
  "simulation_only": true
}