""" Backend abstraction for Lazarus Pit cells. Every backend must implement the same contract so that cells, teams, and operators do not need to know how a cell is actually running. """ from abc import ABC, abstractmethod from dataclasses import dataclass from typing import Optional @dataclass class BackendResult: success: bool stdout: str = "" stderr: str = "" pid: Optional[int] = None message: str = "" class Backend(ABC): """Abstract cell backend.""" name: str = "abstract" @abstractmethod def spawn(self, cell_id: str, hermes_home: str, command: list, env: Optional[dict] = None) -> BackendResult: """Spawn the cell process/environment.""" ... @abstractmethod def probe(self, cell_id: str) -> BackendResult: """Check if the cell is alive and responsive.""" ... @abstractmethod def logs(self, cell_id: str, tail: int = 50) -> BackendResult: """Return recent logs from the cell.""" ... @abstractmethod def close(self, cell_id: str) -> BackendResult: """Gracefully close the cell.""" ... @abstractmethod def destroy(self, cell_id: str) -> BackendResult: """Forcefully destroy the cell and all runtime state.""" ...