I3185 — A request on a host with two Majordomus versions reaches the one whose protocol satisfies it, or is refused with a reason
From the host inventory and each runtime's negotiated protocol range and capability set, answer which runtime a client should attach to for a given repository and request, deterministically, and refuse an incompatible pair with a typed reason.
BLOKOVÁNO wave 2 · p3 · implementation profile · parallel safe
Part of the-host-knows-its-runtimes — A host knows every Majordomus runtime it runs, with no project open.
Blocked. This issue cannot start until I3184, I3177, milestone:the-host-knows-its-runtimes are done. The status is derived from that, not declared.
Cíl
From the host inventory and each runtime's negotiated protocol range and capability set, answer which runtime a client should attach to for a given repository and request, deterministically, and refuse an incompatible pair with a typed reason.
Proč
Slice 02 of the 10-12 resident design; I2163 already refuses a silent attach across versions for one checkout, this extends the judgement to the host. Proposed in ADR 0205 (What a runtime can do is a set of separately evidenced facts, and detection never authorises) (proposed; it carries no authority until the owner accepts it). Sources: chatgpt-majordomus:c240#5.
Aktuální stav
Verified: I2163 DONE (one checkout); no host-level routing answer.
Cílový stav
runtimes route answers runtime + reason; the UI shows it as a compatibility table.
Rozsah
- apps/majordomus-cli/src/capability/builtin/server.rs
- apps/majordomus-cli/src/ui/dashboard.rs
- apps/majordomus-cli/src/ui/mod.rs
Mimo rozsah
- Proxying traffic between runtimes
Závislosti
- I3184BLOCKED One command lists every Majordomus runtime of this user on this host, with no checkout open
- I3177BLOCKED Two nodes one release apart keep linking, and what the older cannot answer is shown unavailable
Kritéria přijetí
- Same registry state, same answer
- An incompatible pair is refused, never downgraded
- The change writes test_host_route_is_deterministic, and its validation then runs it, not only majordomus plan validate.
- /ui shows the routing answer as a compatibility table derived from the same capability.
Validace
- majordomus plan validate
- cargo test --lib capability::builtin::server
Požadované důkazy
- test_host_route_is_deterministic
Důkazy
Nic nezaznamenáno. Za každým tokenem výše musí stát příkaz nebo artefakt, než lze tento úkol dokončit; vyprávění se odmítá.
Časová osa
- zahájeno
- —
- ověřeno
- —
- dokončeno
- —
Tato tři pole, důkazy výše a stav závislostí jsou vše, z čeho se stav skládá. Neexistuje žádné pole stavu, které by s nimi mohlo být v rozporu.
Canonical record: .ai/repo/project/issues/I3185.yaml. Read it back with majordomus plan show I3185.