Skip to content

Tracking: LCM+SM runner — reaper, daemon wiring, Runtime/Workspace adapters #9

@harshitsinghbhandari

Description

@harshitsinghbhandari

Follow-on to #3 (the LCM + Session Manager lane core, merged via #2). That core is implemented and tested behind fakes; this issue tracks the runner + the adapters we own to get from "tested behind fakes" to a daemon that actually spawns and supervises sessions.

Owner

@harshitsinghbhandari (+ @yyovil on the Agent adapter — a dependency, built separately).

Scope (ours)

Runner / wiring

  • Reaper — a periodic timer that (a) samples runtime/process liveness per active session → LCM.ApplyRuntimeObservation, and (b) calls LCM.TickEscalations(now) so duration-based escalations actually fire. (The design assigns the reaper to this lane; the LCM never polls itself.)
  • Daemon wiring — replace the main.go stub with the real assembly: construct the LCM + Session Manager with their adapters, start the reaper loop, and handle graceful start/stop/shutdown.
  • End-to-end harness — wire LCM + SM + in-memory fakes and prove a full spawn → observe → react → kill flow (integration test), independent of the external lanes.

Carried-forward items (from the core PRs)

Real adapters we own

  • Runtime — tmux adapterCreate/Destroy/SendMessage/GetOutput/IsAlive (tmux new-session/has-session/send-keys/capture-pane mechanics).
  • Workspace — git-worktree adapterCreate/Destroy/List/Restore, honoring the worktree-remove safety (refuse to rm -rf a path still registered after git worktree prune).

Dependencies (other lanes — coordinate; not blocking the above)

  • Agent adapter (claude-code / codex) → @yyovil. The reaper's liveness sampling and the SM's spawn use the Agent port; our work proceeds against the port + a fake until it lands.
  • Persistence + CDC (incl. Seed/Get) → Tom.
  • SCM poller producing SCMFacts → adil.
  • Backend API + OpenAPI → aditi.

Notes

  • Everything in Scope (ours) can be built against the existing ports/ interfaces with fakes, then run against real adapters as they land — none of it is blocked on the external lanes.
  • Architecture + current status: see docs/ (docs/architecture.md, docs/status.md).

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestlcm-smLifecycle + Session Manager lane

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions