Files
browser/openspec/changes/synchronize-run-deployment-execution/proposal.md
T

3.3 KiB
Raw Blame History

Why

Platform persists a complete deployment definition, but the independent Run worker currently ignores the deployment body carried in its job assignment. Operators can inspect protected fields only through an extra action, and there is no trustworthy confirmation that a start job used the saved revision.

This change makes the editor load the authorized saved definition directly and makes Platform and Run execute and acknowledge the same frozen deployment revision. The user has explicitly approved printing the raw server directory and execution command in Run's local startup diagnostics only.

What Changes

  • Add a typed, versioned deployment execution body and execution receipt to the PlatformRun lifecycle contract. BREAKING: compatible Run binaries must be upgraded before Platform dispatches deployment-aware lifecycle jobs.
  • Make Run validate and execute the frozen deployment body for install, start, stop, and status actions, including the configured working-directory and shell policy.
  • Add opt-in local-only Run startup diagnostics that print the raw server directory, effective working directory, shell, and executable command. These diagnostics must not be uploaded, returned through the job API, stored as artifacts, or exposed to plugins or Platform Web.
  • Return a non-sensitive receipt containing the deployment revision and execution mode so Platform can distinguish dispatch evidence from Run execution confirmation.
  • Automatically fetch and prefill the authorized saved deployment inputs when opening the edit workflow, then clear them when the dialog closes.
  • Replace ambiguous empty-string update handling with explicit preserve/set/clear semantics and prevent an omitted shell from resetting the saved shell.
  • Make first-party SCUM guided installation fully plugin-owned: Run must consume the frozen SCUM template, ensure SteamCMD plus declared Microsoft prerequisites, install App 3792580 into the selected root, materialize configuration, and verify the resulting server. Operators supply the target directory and game settings, never lifecycle commands or prerequisite installers.
  • Replace raw lifecycle capability text such as process.install in operator task surfaces with the plugin-aware operation name and phase, while retaining the capability as the internal routing identifier.

Capabilities

New Capabilities

  • run-deployment-execution-receipts: Run consumes a frozen deployment definition and confirms the revision it executed without exposing protected values remotely.
  • local-run-startup-diagnostics: opt-in local Run diagnostics print approved raw execution details while remaining outside all Platform channels.

Modified Capabilities

  • None.

Impact

  • Platform job-channel DTOs, domain contracts, validation, lifecycle dispatch/result projection, and deployment editor API/client/view code.
  • Independent run.git protocol, lifecycle executor, worker diagnostics, tests, and release compatibility metadata. No Run source is added to this repository.
  • Operator workflow: opening an authorized stopped-server editor reads protected deployment values; normal list/detail/job/log/audit responses remain redacted.
  • SCUM guided deployment: first-party manifest declaration, Platform's frozen assignment, and the independent Run executor.