Skip to content

Deploy Railpack images across mixed-architecture Machines #806

Closed

Description

@nick-potts

Parent

Build runner spec (#798)

What to build

Join multi-platform image production with the complete remote build/deploy path. A Deploy targeting AMD64 and ARM64 Machines must build the required variants, choose a capable build location, and deliver verified content without trusting incomplete peer tags or adding a new Deploy lifecycle.

Acceptance criteria

  • Derive Railpack platform requirements from the client's selected application Machines before building, using read-only observations. Explicit configured platforms must cover those requirements. Integrate the requirements with local/remote capability checks and automatic selection. Keep native defaults for standalone build and the v1 multiple-platform Dockerfile refusal.
  • After all required Builds succeed, check their actual coverage against destinations from normal Deploy preparation using fresh observations. Missing coverage stops before Service Container, Hook Container, or application-volume mutations and requires an explicit rerun. Do not rebuild automatically, move application placement, or add a second planning/confirmation lifecycle.
  • Deliver each destination's required platform from the complete build host or a peer with verified exact-image content. Check actual manifests/configurations/layers; a tag, an index descriptor, or an image-tree row alone is insufficient. Apply the rule in the shared image-source selection path used by build delivery and Deploy, not as a guard in only one caller.
  • Keep image identity fixed across tag races and include the destination platform in transfer correctness. Preserve per-Machine successes/failures/omissions and explicit registry fallback policy. A partial-content peer must either serve a variant it demonstrably holds or be excluded as a source.
  • Use rung-1/2 selection and image-client tests where they can fail for missing content, tag races or changed required platforms; assert that no application mutation occurs after coverage refusal. Extend registered rung-4 tests through current product local and selected-Machine Railpack builds, full transfer, peer hop, and application execution on native AMD64 and native ARM64 Machines with external-registry fallback disabled.
  • Retain the prototype's partial-peer observation as a regression case: a full index can remain while the unselected platform's data is absent. Do not broaden an emulation-only run into a native-architecture claim. Qualification of packaged release artifacts is a separate blocker-dependent ticket.

Blocked by

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    ready-for-agentFully specified, ready for an AFK agent

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions