/** * Multi-arch launch support for compute allocations. * * An allocation re-launches THIS Nebula install on the compute node, so the * node binary and node_modules must match the compute node's CPU arch. On * heterogeneous clusters (CRI: x86_64 login nodes, aarch64 ghq/pearsonq) a * per-arch runtime is configured via env: * * NEBULA_ARM64_NODE_BIN=/shared/node22-arm64/bin/node * NEBULA_ARM64_DIR=/shared/nebula-notebook-arm64 # checkout with arm64 node_modules * * Both must live on storage the compute nodes share with the login node. */ import type { LaunchContext } from './job-template'; /** SLURM spellings (uname -m) → node's process.arch identifiers. */ export declare function normalizeArch(raw: string): string; /** * Read per-arch runtime overrides from the environment. An arch is configured * only when BOTH its vars are present — a node binary without its matching * node_modules tree (or vice versa) would just fail later and worse. */ export declare function archOverridesFromEnv(env?: Record): NonNullable; /** * Pick the launch context for a partition's arch: the server's own install * when arches match (or the arch is unknown — the status quo), the configured * override when they differ, and a loud, actionable refusal otherwise. The * refusal is the point: without it the job dies on the compute node with * "Exec format error" in a log nobody reads. */ export declare function pickLaunchContext(ctx: LaunchContext, targetArchRaw: string | null, serverArch?: string): LaunchContext;