From 7f03fe6ce8248092f2cd55b2cc0c0e5e47163c92 Mon Sep 17 00:00:00 2001 From: jedarden Date: Tue, 21 Apr 2026 07:06:11 -0400 Subject: [PATCH] P12.OP6: expand arm64 deferral note with implementation roadmap Section 15 Open Problem #6 was a one-line placeholder. Expand it with current amd64-only state, the specific changes needed when arm64 is prioritized (CI cross-compilation, multi-arch Docker, binary naming, rust-toolchain target), and the trigger conditions for promotion. Co-Authored-By: Claude Opus 4.7 --- docs/plan/plan.md | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/docs/plan/plan.md b/docs/plan/plan.md index 75637cf..238beb0 100644 --- a/docs/plan/plan.md +++ b/docs/plan/plan.md @@ -3736,4 +3736,17 @@ These are documented constraints, not blockers. Initial release ships with known 5. **Dump import distribution** — Importing a Meilisearch dump via Miroir historically broadcast all documents to all nodes, transiently placing 100% of documents on every node. **Status:** Addressed by streaming routed dump import (§13.9); documents are routed to owning nodes on the fly, never broadcast. Broadcast mode retained as a fallback for dump variants Miroir cannot fully reconstruct via the public API. -6. **arm64 support** — Not planned for v0.x. Added when K8s ARM node support is required. +6. **arm64 support** — Deferred. Not planned for v0.x. Added when K8s ARM node support is required. + + **Current state:** Everything is amd64-only — `rust-toolchain.toml` targets `x86_64-unknown-linux-musl`, Dockerfile builds only that target, CI binaries are named `*-linux-amd64`, and there is no multi-arch Docker manifest. The fleet is entirely amd64 (iad-ci, ardenone cluster nodes). + + **When prioritized, the changes are:** + + - **CI cross-compilation:** The Argo Workflow `cargo-build` step needs a matrix over targets — install `aarch64-linux-gnu` cross-compiler, add `rustup target add aarch64-unknown-linux-musl`, build both `x86_64-unknown-linux-musl` and `aarch64-unknown-linux-musl` for `miroir-proxy` and `miroir-ctl`. + - **Docker multi-arch:** Kaniko build needs `--customPlatform=linux/amd64,linux/arm64` (or equivalent) for manifest list support. Image tag `ghcr.io/jedarden/miroir:` should span both architectures. + - **Binary naming:** Add `miroir-proxy-linux-arm64` and `miroir-ctl-linux-arm64` to GitHub releases. + - **Helm chart:** No changes — the chart is arch-agnostic at the k8s layer; node selectors choose the right manifest entry automatically. + - **`rust-toolchain.toml`:** Add `aarch64-unknown-linux-musl` to the targets array. + - **Phase 9 testing:** Add arm64 test runs once the CI pipeline supports cross-compilation. + + **Trigger for prioritization:** A concrete use case emerges — e.g., deploying to Hetzner Ampere, AWS Graviton, GCP Tau T2A, or Rackspace Spot ARM nodes.