Repository navigation
Closed
Labels
ready-for-agentFully specified, ready for an AFK agentFully specified, ready for an AFK agent
Description
Parent
What to build
Finish the small user-facing location interface on both build and deploy. The client makes one bounded selection from observed compatible Machines; the selected host retains final admission authority. Selection should be predictable and explainable without becoming a Cluster scheduler.
Acceptance criteria
- Make plain '--remote' select automatically for build and deploy. Keep '--remote=' as the explicit pin and '--local' as the local override, rejecting conflicts and preserving positional Services. Explicit CLI choice overrides Compose; Compose overrides the local default. Plain '--remote' requests automatic selection rather than silently retaining a configured pin.
- Store preferred execution location, recipe, and platforms in Compose using existing extension/standard-field conventions; do not add a separate project configuration file or resource/cache/queue flags. Preserve current Service/profile/build-option selection and keep build location independent of application placement.
- Use visible Machines with verified required recipe/platform, worker, image-store, and emulation capability as applicable. Use a deterministic stable Machine-ID order for v1 automatic selection and existing ambiguity rules for explicit/preferred targets. Native defaults refer to the actual Docker execution platform. Report the selected Machine before upload.
- An unavailable preferred/explicit target or absent compatible automatic candidate fails with observed evidence and a useful corrective action. Keep stale/unknown capability visible. The selected Machine rechecks admission; no silent local fallback, automatic redistribution after submission, replicated builder role, or cluster-wide scheduling/queue state is added.
- Use rung-1 selection/precedence/capability tests, including permuted observation order, ambiguity, missing evidence and explicit overrides. Use rung-3 actual CLI tests for flag/positional parsing and refusal text. Add or extend a registered rung-4 two-candidate build-and-deploy exercise showing compatible selection, an explicit pin, and local override. The same capture/execute module must remain the only build path.
Blocked by
Metadata
Metadata
Assignees
Labels
ready-for-agentFully specified, ready for an AFK agentFully specified, ready for an AFK agent
Activity
nick-potts commentedon Sep 9, 2026
Descoping the Compose build location
Implemented in #846, with one acceptance criterion deliberately dropped rather than deferred.
AC2 asks to "store preferred execution location, recipe, and platforms in Compose using existing extension/standard-field conventions", and AC1 sets up the tier "Explicit CLI choice overrides Compose; Compose overrides the local default." An earlier revision of #846 implemented this as a top-level
x-build-machine:accepting a Machine name or ID,auto, orlocal.That has been removed. The reason is in our own glossary:
Both are Cluster-local, one is ambiguous, and a Compose file is portable and usually committed.
x-build-machine: towertherefore names a different Machine in each developer's checkout and no Machine at all in CI — the same class of mistake as hardcoding a hostname. Which Machine builds is a per-invocation fact, and--remote=<Machine>already expresses it correctly.An
auto | local-only form was considered — portable, and it would have preserved the precedence tier — but it was judged not worth a Compose surface of its own for what the flags already say.Delivered: plain
--remoteselects automatically,--remote=<Machine>pins,--localstates the local default, conflicts are refused, positional Services are preserved; deterministic Machine-ID ordering with native-platform ranking; per-Machine evidence in every refusal; rung 1/3/4 tests. Recipe (build.x-recipe) and platforms (build.platforms) were already in Compose and are untouched, so AC2's other two clauses hold.Not delivered: the Compose tier of AC1, and AC2's execution-location clause.
Closing with #846 rather than leaving this open, since the gap is a decision against the criterion, not outstanding work. If a portable project-level build-location preference is wanted later, it should be a fresh issue arguing for the
auto | localform on its own merits.