Files
browser/openspec/changes/replace-run-endpoints-with-redis-runtime-registry/tasks.md
T

3.9 KiB

1. Prompt Boundaries

  • 1.1 Positive prompt: replace durable run endpoint routing with a Redis-backed runtime registry so the first-party server management area can route work to authenticated Run sessions without requiring endpoint selection or server-to-endpoint database binding.
  • 1.2 Directional prompt: work inside platform/, platform_web/, plugins/, OpenSpec contracts, and local dev/test scripts; preserve platform-side distribution builds, component-token authentication, channel isolation, and existing magical-girl console styling.
  • 1.3 Boundary prompt: do not add cloud host sales, billing, SaaS marketplace features, a run/ source tree, host-path exposure, raw credentials, direct sockets, or any fallback that dispatches runtime work without a Redis-backed session lease.

2. Redis Registry Foundation

  • 2.1 Add Redis configuration and health reporting for development, test, and production runtime registry use.
  • 2.2 Add local/test Redis setup so automated tests use isolated Redis keys or databases rather than memory-only runtime registry behavior.
  • 2.3 Define RuntimeSessionRegistry with Redis-backed register, heartbeat, lookup-by-token, lookup-by-server-component, revoke, and projection methods.
  • 2.4 Implement Redis key namespaces, TTL renewal, token hashing, capability/capacity snapshots, and no-startup-cleanup semantics.

3. Run Registration And Session Auth

  • 3.1 Change Run hello to authenticate server/component identity and write a Redis session lease instead of creating or updating a durable RunEndpoint.
  • 3.2 Change heartbeat to renew Redis leases and return unknown-session responses that cause Run to re-register.
  • 3.3 Move run request signature and session-token validation to registry-derived sessions while preserving nonce and clock-skew protection.
  • 3.4 Update revocation and component key reset to revoke Redis sessions for the affected server/component without relying on endpoint rows.

4. Job Targeting And Dispatch

  • 4.1 Add durable job target fields for serverInstanceId, targetComponentKind, and targetComponentKey, with compatibility for existing runEndpointId data during migration.
  • 4.2 Update job creation and idempotency to target logical components rather than run endpoints, keeping platform builder jobs as a platform-owned target.
  • 4.3 Update claim, ack, progress, result, cancel, reconcile, log ingest, artifacts, config writes, file operations, protected requests, and lifecycle dispatch to authorize through Redis session targets.
  • 4.4 Remove validation that requires server jobs to match ServerInstance.RunEndpointID, replacing it with server/component target validation and Redis session presence where dispatch requires a live Run.

5. API, UI, And Compatibility Cleanup

  • 5.1 Remove first-party creation/edit/deploy flows that ask for run endpoint selection or persist server-to-run-endpoint bindings.
  • 5.2 Replace run endpoint list/status UI with runtime connection health projections derived from Redis sessions and durable server/component metadata.
  • 5.3 Update API DTOs, docs, plugin bridge contracts, and tests to mark runEndpointId as legacy compatibility where still accepted.
  • 5.4 Remove durable RunEndpoint repository usage for generated Runs after compatibility tests cover legacy records.

6. Verification

  • 6.1 Add backend tests for Redis registration, TTL expiry, token rotation, Redis restart/loss, cross-server claim rejection, and job lease behavior.
  • 6.2 Add frontend tests for runtime connection health and absence of run endpoint selectors in first-party server workflows.
  • 6.3 Run go test ./..., npm --prefix platform_web test -- --run, scripts/check-structure.sh, and targeted Redis integration tests.
  • 6.4 Run openspec validate replace-run-endpoints-with-redis-runtime-registry --strict before marking implementation tasks complete.