PI Orchestrator — Discipline Fixes & Restart Runbook (MC #105648)
PI Orchestrator — 4 discipline fixa (MC #105648, 2026-07-14)
Kontekst: 3 incidenta istog dana tokom Bilko podsjetnik talasa (puni log: ~/system/evidence/105648/incident-log-2026-07-14.md): (1) porezni research task klasifikovan kao devops + zombie lease bez workera; (2) intake klasifikator blokirao task s tuđim aktivnim lease-om; (3) claim-race na resume → drugi builder u istom worktree-u.
Šta je fixano (pi-orchestrator.js, backup .bak-105648-20260714)
- Route prior u classify(): MC
routepolje je sada prior nad semantičkim klasifikatorom (ROUTE_TO_DOMAIN_PRIORmapa; route=general → null). research više ne može postati devops. - Worktree company konzistencija: root cause —
task.companyse NIKAD nije popunjavao,resolveBuildCwd()je uvijek padao na hardkodirani 'CodeCraft'. Sada se postavlja odmah nakon klasifikacije. - Heartbeat ↔ worker liveness:
activeWorkerPidsregistar +isWorkerLive();heartbeatClaimExtendna mrtav/stale worker RELEASE-a lease (error log "zombie claim") umjesto produženja. - Claim/block disciplina: (a) grab-query isključuje tuđe aktivne lease-ove (ranije je gledao samo legacy
task_scheduling, ne pravetasks.lease_holderkolone); (b) persona-keyword block gate preskače taskove s tuđim lease-om; (c)checkWorktreeDispatchSafety— nekomitovane tuđe izmjene u worktree-u = abort na queueForHuman.
Verifikacija i deploy
- Verifier PASS (15/15 tvrdnji, nezavisni rerun 11/11 smoke):
~/system/evidence/105648/verifier-report.md - Deploy: graceful SIGTERM starog daemona → LaunchAgent KeepAlive respawn. Živo potvrđeno: PID 90759 start 23:08:05 > file mtime 22:48; prvi ciklus čist.
Operativne lekcije (restart procedura)
- Restart =
kill -TERM <pid>+ KeepAlive respawn ILIlaunchctl kickstart -k gui/501/com.john.pi-orchestrator. NIKADnohup node ... start— orphan procesi drže lock i blokiraju LaunchAgent. - Poznati bug (MC #105700): orphan-detekcija matchuje bilo koji proces čiji command line sadrži pattern string — i tvoj monitoring grep! Prije restarta ugasi procese koji sadrže "pi-orchestrator.js start" u komandi.
- Session-less daemon i dalje ne može čist
mc.js done(T9-C2 gate) — vidiproject_piorch_daemon_recovery_2026-06-19.