Files
browser/openspec/changes/make-run-autonomous-lifecycle-owner/proposal.md
T

2.2 KiB

Why

Generated Run currently comes online, registers, and then waits for Platform to assign lifecycle jobs before a game process can exist. That inverts the intended ownership model: Run is the machine-side lifecycle owner, Platform should follow Run-reported facts, and plugins should only declare how Run initializes, installs dependencies, verifies readiness, and starts the game.

What Changes

  • BREAKING Treat generated Run startup as an autonomous lifecycle bootstrap driven by plugin-declared lifecycle assets and the server deployment definition embedded in the generated package.
  • Stop using accepted generated Run registration as a Platform trigger to enqueue process.start or process.status reconciliation jobs.
  • Add a bounded autonomous lifecycle plan to generated Run distribution build input so the independent Run package can self-bootstrap without waiting for /run/jobs/claim work.
  • Keep Platform as the registry, authorization, audit, and projection surface: Platform receives Run heartbeats, logs, lifecycle reports, and process facts, then updates visible server state from those Run-owned facts.
  • Preserve Platform-owned distribution builds and component key security; generated Runs still never receive distribution-build authority.

Capabilities

New Capabilities

  • run-autonomous-lifecycle-owner: Generated Run owns plugin-declared bootstrap/start behavior and Platform follows Run-reported observed state.

Modified Capabilities

  • platform-side-distribution-builds: Generated Run packages must include the bounded autonomous lifecycle plan required for Run to bootstrap itself.

Impact

  • AGENTS.md, platform/protocol/*, and OpenSpec contracts must stop describing Platform as the lifecycle bootstrap dispatcher for generated Runs.
  • platform/ distribution build input and tests gain an autonomous lifecycle plan sourced from plugin lifecycle declarations and server deployment settings.
  • platform/service/control.go stops enqueueing registration-time lifecycle/status jobs for generated Runs.
  • The independent run repository must implement plan consumption and autonomous execution; this repository must not re-add a run/ source tree.