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.

I2489 — Obrazovka nad svým rozpočtem shodí sestavení: rozpočty latence UI jsou politika měření výkonu a bench --check je hlídá

Udělat z rozpočtu latence UI, který stanovil vlastník, něco, co vynucuje CI: politika měření výkonu deklaruje absolutní meze, bench --check je drží s baseline i bez ní a na každém hostiteli a úloha ui spouští tuto kontrolu při každé změně, která může zpomalit obrazovku.

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

Součást development-runtime — The runtime has a development surface.

Cíl

Udělat z rozpočtu latence UI, který stanovil vlastník, něco, co vynucuje CI: politika měření výkonu deklaruje absolutní meze, bench --check je drží s baseline i bez ní a na každém hostiteli a úloha ui spouští tuto kontrolu při každé změně, která může zpomalit obrazovku.

Proč

ADR 0142, část 4. Balíček vlastníka stanovil rozpočty (cachovaná schopnost pod 50 ms na p95, teplá stránka renderovaná serverem pod 100 ms, živá aktualizace pod 250 ms) a řekl, že jsou „measured, never invented“. Dnes je nedrží nic: benchmark od dávky výkonu UI měří obrazovky UI a hlásí; nic neodmítá. UI bylo na masteru osm sekund pomalé celý den, než to někdo řekl.

Aktuální stav

majordomus bench měří čas každé obrazovky UI (system.http.ui.* nad připnutým kontextem, system.http.live.ui.* nad živým pohledem) a bench --check porovnává běh s baseline téhož hostitele. Cíl, který byl vždy příliš pomalý, nikdy nezregreduje a platforma bez baseline neporovnává nic, takže žádná obrazovka nebyla držena k mezi. Změřeno před touto změnou, debug build při zátěži 57: každá teplá obrazovka na 1–21 ms p95 kromě /ui/command na 400–660 ms.

Cílový stav

.ai/repo/benchmarks/rust/policy.yaml gains budgets: each a prefix of target keys, a cache mode, a metric, a bound in milliseconds and a minimum number of samples, every key but the last required and a malformed one a policy error that names it. Check::compare judges every measurement a budget bounds, whether or not a baseline exists and whatever host recorded it, as PASS, OVER or SHORT; bench --check prints the budget lines with the target, its value and its bound, says within or over budget, and exits 10 when anything is over. The policy declares a warm screen of the UI within 100 ms at p95 for both views. The ui job of validate runs bench system.http. --check before the browser audit, as a step of the ui-audit gate. /ui/command no longer walks the registry once per command: it indexes command lines once per screen. Not done here: measuring the first request after the repository moved, which is I2485.

Rozsah

  • apps/majordomus-cli/src/bench/baseline.rs
  • apps/majordomus-cli/src/ui/command.rs
  • apps/majordomus-cli/tests/bench_units.rs
  • .ai/repo/benchmarks/rust/policy.yaml
  • .ai/repo/ci/gates.yaml
  • .github/workflows/validate.yml
  • .ai/repo/benchmarks/rust/README.md
  • docs/MAJORDOMUS_UI.md
  • test/cases/1099_a_screen_over_its_budget_fails.sh
  • .ai/repo/project/issues/I2489.yaml

Závislosti

Co na tom čeká

Kritéria přijetí

  • Teplá obrazovka změřená nad rozpočtem selže na bench --check s kódem 10 a bez základní hodnoty k porovnání a report jmenuje obrazovku, její hodnotu a mez
  • Rozpočet omezuje jen prefix a režim cache, které jmenuje, a měření s méně vzorky než jeho minimum je SHORT a nezpůsobí selhání
  • Rozpočet s chybějícím povinným klíčem nebo režim cache, který žádným režimem není, je chyba politiky, která klíč pojmenuje
  • Politika repozitáře deklaruje rozpočet UI pro připnuté a živé zobrazení a každá obrazovka je v něm
  • Job ui spouští kontrolu před auditem prohlížeče, pod limitem menším než limit jobu

Validace

  • bin/majordomus plan validate
  • cargo test --test bench_units
  • MJ_TEST_JOBS=2 bash test/run.sh 1099_a_screen_over_its_budget_fails
  • majordomus bench system.http. --transport system --profile ci --no-write --check

Požadované důkazy

  • bench_budget_unit_tests
  • ui_budget_gate_case_1099
  • ui_budget_bench_results

Důkazy

pokrývátypcommandvýsledeku commitu
bench_budget_unit_teststestcargo test --manifest-path apps/majordomus-cli/Cargo.toml --test bench_unitstest result: ok. 7 passed; 0 failed, na stromě shodném s masterem 3442ce68c5: výsledek nad rozpočtem kontrolu shodí a je jmenován, výsledek v rozpočtu projde, výsledek s příliš málo vzorky je hlášen a nesoudí se3442ce6
ui_budget_gate_case_1099testbash test/run.sh 1099_a_screen_over_its_budget_failsok 1099_a_screen_over_its_budget_fails, na stromě rovném masteru 3442ce68c5: obrazovka nad svým rozpočtem selže v kontrole a je jmenována, obrazovka v rozpočtu projde, politika deklaruje oba pohledy3442ce6
ui_budget_bench_resultscimajordomus bench system.http. --transport system --profile ci --no-write --checkbench --check: v rámci rozpočtu, v jobu ui běhu validate 38379385624 na masteru e506c041a4 (job 115235815811), na Linux runneru hostovaném GitHubem; každý výsledek system.http.ui. a system.http.live.ui. za tepla, p95, nejvýše 100 ms při 20 vzorcích. Neopakováno na 3442ce68c5: lokální běh na Macu při zátěži 125 neudržel vlastní server (exit 13)3442ce6

Časová osa

zahájeno
2026-10-13T12:50:07Z
ověřeno
2026-10-13T12:50:24Z
dokončeno
2026-10-13T12:50:44Z

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/I2489.yaml. Přečtěte jej zpět pomocí majordomus plan show I2489.

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