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.

I2129 — Časování leasů, které politika deklaruje, jsou ta, která používají volby mcp a serve

Načíst politiku před mcp a serve elect, zajistit, aby každý čtenář časování lease četl deklarovanou hodnotu, a deklarovat časový limit nečinnosti vedle ostatních časování serveru.

HOTOVO vlna 0 · p2 · profil implementation · běží samostatně

Součást runtime-lifecycle — Jeden použitelný server na checkout se spouští, připojuje, zastavuje a hlásí svůj stav bez souběhů a skrytých zabití.

Cíl

Načíst politiku před mcp a serve elect, zajistit, aby každý čtenář časování lease četl deklarovanou hodnotu, a deklarovat časový limit nečinnosti vedle ostatních časování serveru.

Proč

Timings (apps/majordomus-cli/src/lease.rs:89-191) je OnceLock naplněný zkompilovanými výchozími hodnotami při prvním čtení a declare_timings se volá jen z LoadedPolicy::load (apps/majordomus-cli/src/policy.rs:364). V mcp a serve čtou Lease::keep_alive (apps/majordomus-cli/src/lease.rs:1043) a inspect timings před App::load, který politiku nenačítá (apps/majordomus-cli/src/commands/mcp.rs:173-174, apps/majordomus-cli/src/commands/serve.rs:72,89-90), takže pozdější deklarace je tichý no-op. Politiku načte jako první jen env enter (apps/majordomus-cli/src/commands/env.rs:548). standing_of (apps/majordomus-cli/src/capability/builtin/server.rs:370,386) a spawn claim (apps/majordomus-cli/src/commands/serve.rs:330,358) používají zkompilovaný BIND_GRACE, ať je deklarováno cokoli. docs/MCP.md:284-303 a komentář na .ai/repo/policy.yaml:335-339 říkají, že spor se posuzuje podle deklarace. apps/majordomus-cli/tests/lease_declared.rs volá declare_timings přímo a případ 354_a_lease_contest_is_judged_by_a_declaration.sh kontroluje jen schéma. Dnes latentní, protože deklarované hodnoty se rovnají výchozím. Idle timeout DEFAULT_IDLE_SECONDS (apps/majordomus-cli/src/cli.rs:3427) je zkompilovaná konstanta chybějící v policy.yaml server:. Audit základní linie z 2026-10-09 na masteru 1fb8d6be44, mezera životního cyklu 6 a drift 1.

Aktuální stav

Deklarované časování zámku dosáhne jen env enter; mcp, serve, standing_of a claim spawnu používají zkompilované hodnoty.

Cílový stav

mcp a serve čtou politiku před svou první volbou, takže deklarované časování je to, které volba používá; standing_of a mez spawn-claim čtou lease::timings() místo zkompilovaných BIND_GRACE a JOIN_TIMEOUT. Odložená část, časový limit nečinnosti jako deklarovaný klíč serveru, je I2701.

Rozsah

  • apps/majordomus-cli/src/lease.rs
  • apps/majordomus-cli/src/policy.rs
  • apps/majordomus-cli/src/commands/mcp.rs
  • apps/majordomus-cli/src/commands/serve.rs
  • apps/majordomus-cli/src/capability/builtin/server.rs
  • apps/majordomus-cli/src/cli.rs
  • .ai/repo/policy.yaml
  • share/schemas/majordomus/policy
  • apps/majordomus-cli/tests/lease_declared.rs
  • test/cases/354_a_lease_contest_is_judged_by_a_declaration.sh
  • docs/MCP.md

Závislosti

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

Co na tom čeká

Kritéria přijetí

  • Test se skutečným procesem, který deklaruje jiný busy grace než výchozí, pozoruje, že volba čeká deklarovanou hodnotu, v mcp i serve
  • Žádný čtenář časování lease nejmenuje přímo zkompilovanou konstantu

Validace

  • bin/majordomus plan validate
  • cargo test --test lease_declared
  • MJ_TEST_JOBS=4 bash test/run.sh 354_a_lease_contest_is_judged_by_a_declaration

Požadované důkazy

  • declared_timings_reach_the_election_test

Důkazy

pokrývátypcommandvýsledeku commitu
declared_timings_reach_the_election_testtestcargo test --locked --manifest-path apps/majordomus-cli/Cargo.toml --test lease_policy_processtest result: ok. 3 passed; 0 failed: serve a mcp čekají každý deklarovanou dobu obsazenosti; peers.rs a server.rs čtou lease::timings() (běh 2026-10-14 12:00-12:15Z na masteru 2ca25bb9cf plus tato změna)2ca25bb

Časová osa

zahájeno
2026-10-14T12:15:47Z
ověřeno
—
dokončeno
2026-10-14T12:16:27Z

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.

Kanonický záznam: .ai/repo/project/issues/I2129.yaml. Načtěte ho zpět pomocí majordomus plan show I2129.

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