Skip to content

Node runtime split and role-specific rollout #30

@jmagar

Description

@jmagar

Summary

Implement docs/superpowers/plans/2026-04-24-node-runtime-split.md. Split lab serve into explicit controller and node runtime paths, stop deployed nodes from initializing controller-only surfaces, build role-specific controller/node artifacts, make nodes update verify real readiness and WebSocket reconnects, then prove the path with full verification and live rollout.

Beads

Epic: lab-686q

Plan

  • docs/superpowers/plans/2026-04-24-node-runtime-split.md
  • docs/NODE_RUNTIME_CONTRACT.md

Scope

  • Runtime role resolution supports controller/node overrides and requires a controller host for node mode.
  • Non-controller serve skips registry, gateway, MCP, Web UI, OAuth, marketplace, fs, full API, and controller logs startup.
  • Node health is loopback-only and implemented with raw tokio TCP.
  • nodes update builds/reuses distinct controller and node artifacts.
  • Rollout ships the right artifact per target and reports artifact role/profile in JSON.
  • Controller verification checks health, readiness, and fleet WebSocket listener.
  • Node verification checks controller-observed connected state, not just inventory presence.
  • Controller self-update failure reports recovery metadata and backup path.
  • node-runtime feature can be checked without controller dependencies.

Acceptance Criteria

  • just check passes.
  • just build passes.
  • just test passes.
  • lint/no-run verification passes.
  • live config audit passes.
  • live nodes update --all passes with final JSON ok: true.

Execution Order

  1. Runtime split and node health.
  2. Role-specific nodes update artifacts and verification.
  3. Live rollout until green.
  4. Cargo feature slimming.
  5. Generic deploy runner follow-up.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions