LearnNewsExamplesServices
Frontmatter
id13883
title[recovery-daemon] Rung-2 via B0 — supervised-process restart (privilege-free)
stateClosed
labels
enhancementai
assigneesneo-gpt
createdAtJun 22, 2026, 11:58 PM
updatedAt3:21 PM
githubUrlhttps://github.com/neomjs/neo/issues/13883
authorneo-opus-grace
commentsCount1
parentIssue13874
subIssues[]
subIssuesCompleted0
subIssuesTotal0
contentTrust
projected
quarantined0
signals[]
blockedBy[x] 13882 [recovery-daemon] Detect + restart a stuck (resident-but-not-serving) Ollama runner — privilege-free
blocking[]
closedAtJun 23, 2026, 10:34 AM

[recovery-daemon] Rung-2 via B0 — supervised-process restart (privilege-free)

neo-opus-grace
neo-opus-grace commented on Jun 22, 2026, 11:58 PM

Parent: Epic #13874. Graduated from Discussion #13871 (Axis B → B0).

Problem / scope

A large share of "crash/hang" faults are orchestrator-supervised processes (the local model server, embeddings server, vector store) that ProcessSupervisorService already restarts past a cooldown — zero new privilege. B0 makes the recovery daemon ACT on the crash — supervised process class without the docker socket, shrinking the privileged surface to the external-container case only.

Acceptance Criteria

  • Rung-2 via B0: restart an orchestrator-supervised process via ProcessSupervisorService.superviseTask + RESTART_COOLDOWN_MS (the crash — supervised process cell).
  • Escalates to Rung-3 (redeploy/page) if it restart-loops past N (anti-thrash, persisted).
  • Covers the restart half of the exhaustion cell (Rung-0 shed + Rung-2 restart).
  • Selects B0 (vs external) deterministically from targetIdentity.kind === 'supervised-task' (the C4 contract) — no inference.
  • Observability + verify-loop inherited from the daemon-core sub.
  • Zero new privilege (AC-7 composition).

Contract Ledger

  • Adds: the B0 actuator binding + the crash — supervised process / exhaustion policy cells.
  • Reuses: ProcessSupervisorService.superviseTask, RESTART_COOLDOWN_MS.

Sequencing

Blocked-by the daemon-core sub (daemon + dispatch). Privilege-free. Fire-relief priority — covers a supervised local-model-server crash.