Přeskočit na obsah

Tato stránka byla automaticky přeložena z angličtiny, jediného jazyka, ve kterém se tento web píše. Číst originál.

I3097 — An older executable never takes the shared-server lease from a newer one because the newer one's file was rebuilt

Make the replaced-executable takeover in apps/majordomus-cli/src/lease.rs compare versions before it fires, so a process whose own version is older than the version the lease records attaches to the newer server (or reports it) and never replaces it, whatever happened to the file at the lease's executable path.

HOTOVO vlna 0 · p1 · profil implementation · bezpečné paralelně

Součást safe-self-update — Každý uzel mesh sleduje publikovaný release sám, verze se potkávají bezpečně a původ release lze ověřit.

Cíl

Make the replaced-executable takeover in apps/majordomus-cli/src/lease.rs compare versions before it fires, so a process whose own version is older than the version the lease records attaches to the newer server (or reports it) and never replaces it, whatever happened to the file at the lease's executable path.

Proč

On 2026-10-20 at 22:27:58Z the shared server of this repository, 1.0.0-alpha.1 (pid 77871), lost its lease to a 0.30.2 process (pid 57957): apps/majordomus-cli/target/debug/majordomus had been rewritten at 22:27:01Z, and `superseded` (lease.rs) takes over whenever the file at the lease's path changed, before the version verdict of I2163 is asked. The board and every mesh claim dropped twice in 20 minutes, and for 8 minutes the repository was served by an older release (server.log lines 425265-425268).

Aktuální stav

`superseded(doc)` returns a takeover reason when the lease's executable path is this process's and its mtime or size differ; it is checked before `version_verdict`, so it never asks which side is newer.

Cílový stav

A replaced executable takes over only when its version is the same as or newer than the lease's recorded version; an older one is told the newer server's address and attaches, and the log names both versions.

Rozsah

  • apps/majordomus-cli/src/lease.rs
  • .ai/repo/project/issues/I3097.yaml

Mimo rozsah

  • Where branch builds write their binaries (a build of a branch into the primary's target directory is its own issue)

Závislosti

Žádné. Tento úkol je kořenem grafu.

Kritéria přijetí

  • A lease recorded by a newer version, whose executable file is then replaced by an older build at the same path, is not taken over by that older build
  • A replaced file of the same or a newer version still takes over, as before
  • The log line of a refused takeover names both versions

Validace

  • cargo test --manifest-path apps/majordomus-cli/Cargo.toml --lib lease

Požadované důkazy

  • older_replacement_attaches
  • newer_replacement_takes_over

Důkazy

pokrývátypcommandvýsledeku commitu
older_replacement_attachescicargo test --manifest-path apps/majordomus-cli/Cargo.toml --lib lease::tests::older_replacement_attachesok, the rust job passed in master validate 39784979979 (success at 2034d4a3f0b, which holds lease.rs older_replacement_attaches, landed in a57482183bf)376493c
newer_replacement_takes_overcicargo test --manifest-path apps/majordomus-cli/Cargo.toml --lib lease::tests::newer_replacement_takes_overok, the rust job passed in master validate 39784979979 (success at 2034d4a3f0b, which holds newer_replacement_takes_over, landed in a57482183bf)376493c

Časová osa

zahájeno
2026-10-21T02:42:11Z
ověřeno
2026-10-21T02:42:43Z
dokončeno
2026-10-23T16:41:55Z

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/I3097.yaml. Read it back with majordomus plan show I3097.

Prohledává názvy a popisy všech stránek, které tento web publikuje.