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.

M004 — Výkon je spustitelný důkaz a horká cesta nedělá žádnou kanonickou práci dvakrát

Každý veřejný příkaz lze měřit z registru příkazů se studenými i teplými distribucemi, fáze a čítače práce libovolného běhu lze vypsat, cache a dávková čtení, které odstraňují opakovanou práci, zachovávají každý pozorovatelný výsledek, přijatá základní hodnota žije v repozitáři a kontrola odmítne regresi podle politiky a pre-commit hook je dost rychlý na to, aby ho nikdo neobcházel.

AKTIVNÍ 18 of 40 issues done

připraveno
12
blokováno
10
aktivní
0
verify
0
hotovo
18
zrušeno
0

Problém

Shellový nástroj je dost pomalý na to, aby se mu lidé vyhýbali: doctor trvá deset sekund a běží při každém commitu přes pre-commit hook, watch stejně dlouho, knowledge nodes šest sekund, plan validate čtyři, kontrola dat webu a jediný testovací případ půl minuty a sada půl hodiny. Nikdo neuměl říct, která fáze za to může, protože nic fáze neměřilo; dva validátory, které stojí dvě třetiny doctoru, jsou smyčky s jedním procesem awk na klíč nad soubory, které už jednou byly zploštěny. Spustitelný soubor v Rustu měřený ve stejnou dobu je rychlý, takže pomalost je vlastní shellového nástroje.

Výsledek

Každý veřejný příkaz lze měřit z registru příkazů se studenými i teplými distribucemi, fáze a čítače práce libovolného běhu lze vypsat, cache a dávková čtení, které odstraňují opakovanou práci, zachovávají každý pozorovatelný výsledek, přijatá základní hodnota žije v repozitáři a kontrola odmítne regresi podle politiky a pre-commit hook je dost rychlý na to, aby ho nikdo neobcházel.

Aktuální stav

MJ_TIMING vypisuje fáze podle validátorů a dva počítadla práce (feature/performance-truth 77f5d79). Žádný příkaz benchmark, žádná základní linie, žádná kontrola regrese, žádná cache parsování, žádná doktrína výkonu; čísla výše jsou změřenou základní linií na tomto repozitáři.

Cílový stav

majordomus bench odvozuje své cíle ze share/commands.yaml, zaznamenává p50, p90, p95, p99, min, max, mean a stddev pro každý příkaz a režim, lokální běhy ukládá do .ai/local/benchmarks/, porovnává s .ai/repo/benchmarks/baseline.json podle bloku benchmark v politice a při regresi skončí nenulovým kódem. Validátory registru, katalogu, modelu projektu a pokrytí čtou každý plochý soubor jednou. Zploštělé YAML se cachuje v .ai/local/cache/ podle hashe obsahu. Pravidla projektu stanoví doktrínu, docs/PERFORMANCE.md ji vysvětluje a CI spouští strukturální kontroly.

Rozsah

  • lib
  • bin/majordomus
  • share/commands.yaml
  • share/allow
  • share/standard/majordomus/
  • share/skeleton
  • .ai/repo/rules/project
  • .ai/repo/benchmarks
  • dokumentace
  • skripty
  • test/cases
  • test/lib.sh
  • .github/workflows/validate.yml

Mimo rozsah

  • Jakákoli změna apps/majordomus-cli, jejíž naměřená latence není problém
  • Databáze metrik, dashboard, tracingový backend nebo jakákoli telemetrická služba
  • Hot reload nebo sledování souborového systému
  • Trvalá cache výsledků schopností napříč procesy nad rámec cache zploštění
  • Měření výkonu externích služeb

Kritéria přijetí

  • Každý veřejný příkaz v share/commands.yaml je cílem měření výkonu bez druhého seznamu kdekoli
  • Studená a teplá rozdělení se zaznamenávají zvlášť s p50, p95 a p99 a nikdy se nemíchají
  • Lokální běh se uchovává pod .ai/local/benchmarks/ a nikdy se nepovažuje za základní hodnotu
  • Commitnutá základna se aktualizuje jen výslovným příkazem na čistém stromu
  • bench --check skončí nenulově při regresi nad prahy politiky a jmenuje příkaz, metriku, obě hodnoty a práh
  • Každý kanonický soubor se na příkaz zploští nejvýše jednou, což dokazují čítače práce v jednom případu
  • Zásah i minutí cache produkují bajtově shodný výstup příkazu pro každý příkaz jen pro čtení, což dokazuje případ
  • doctor v tomto repozitáři běží pod rozpočtem, který politika deklaruje, a pre-commit hook ho zdědí
  • Pravidla výkonu jsou projektová pravidla pod .ai/repo/rules/project a docs/PERFORMANCE.md je reference, na kterou odkazuje README

Validace

  • bash test/run.sh
  • bin/majordomus doctor
  • bin/majordomus watch
  • bin/majordomus bench --check
  • scripts/generate-site-data --check
  • shellcheck -x -s bash bin/majordomus lib/*.sh

Požadované důkazy

  • phase_timing
  • batch_reads
  • flatten_cache
  • bench_targets_derived
  • bench_persisted
  • baseline_explicit
  • regression_refused
  • doctor_under_budget
  • docs_integrated

Rizika

  • Cache je druhá věc, které lze věřit. Cache flatten je klíčována hashem obsahu souboru, který cachuje, takže zastaralá položka nemůže být přečtena pro změněný soubor; může stát jen minutí.
  • Prahy nástěnného času jsou mezi stroji zašuměné. Politika regrese je konzervativní a relativní, strukturální počítadla jsou přesná a jen počítadla kontrolují CI přísně.
  • Dávkování čtení mění způsob psaní validátorů. Každý přepis dokazuje případ, který pro validátor už existuje, spuštěný před a po, plus případ počítadla.

Úkoly

Každý z nich je prováděcí kontrakt s vlastními kritérii přijetí, validačním příkazem a požadovanými důkazy. Sloupec wave je vrstva grafu závislostí, v níž úkol leží.

issuestatusvlnazávisí nanázev
I0817 HOTOVO 0 — Časování fází a čítače práce za MJ_TIMING
I0818 HOTOVO 1 I0817 Registr příkazů se čte jedním průchodem
I0819 HOTOVO 1 I0817 Model projektu se načítá jedním zploštěním na soubor a bez vyhledávání po souborech
I0820 PŘIPRAVENO 2 I0818, I0819 Validátory katalogu, DAG, kontextu a příkazového povrchu čtou své vstupy jednou
I0821 PŘIPRAVENO 1 I0817 Zploštěné YAML se cachuje v .ai/local/cache podle hashe obsahu
I0822 BLOKOVÁNO 3 I0818, I0819, I0820 Každý kanonický soubor se na příkaz zploští nejvýše jednou
I0823 HOTOVO 1 I0817 majordomus bench: cíle odvozené z registru příkazů
I0824 HOTOVO 2 I0823 Bench ukládá lokální běhy a drží nejnovější projekci
I0825 HOTOVO 3 I0824 Explicitní commitnutý baseline
I0826 HOTOVO 4 I0825 bench --check odmítne regresi podle politiky
I0827 HOTOVO 2 I0823 Blok politiky měření výkonu
I0828 BLOKOVÁNO 3 I0818, I0819, I0820, I0827 doctor v rámci deklarovaného rozpočtu a hook ho zdědí
I0829 HOTOVO 0 — Doktrína výkonu jako projektová pravidla
I0830 HOTOVO 5 I0823, I0826, I0829 docs/PERFORMANCE.md, README, CONTRIBUTING a reference CLI
I0831 BLOKOVÁNO 5 I0822, I0826 Tvrzení o výkonu ve stavu, který je prokázán
I0832 PŘIPRAVENO 2 I0817, I0819 generate-site-data je instrumentován a jeho hotspoty odstraněny
I0833 HOTOVO 1 I0817 uzly a hrany znalostí čtou každý zdroj jednou
I0834 BLOKOVÁNO 4 I0828 Test runner hlásí čas jednotlivých případů a rozpočet sady
I0835 BLOKOVÁNO 5 I0822, I0826 CI spouští strukturální kontroly výkonu
I0836 HOTOVO 2 I0819 Generátor syntetického repozitáře pro případy škálování
I0837 HOTOVO 1 I0817 Report časování jako JSON
I0838 PŘIPRAVENO 5 I0826 bench compare a report největších regresí
I0839 BLOKOVÁNO 4 I0828 watch zdědí každou opravu doctoru i jeho vlastní rozpočet
I0840 BLOKOVÁNO 3 I0820, I0821 context a jeho podpříkazy pod jednu sekundu
I0841 BLOKOVÁNO 2 I0821 Ekvivalence cache dokázaná případy ve tvaru vlastností
I0842 BLOKOVÁNO 3 I0818, I0819, I0820, I0832, I0833 Důkazy před a po pro každou optimalizaci
I0843 BLOKOVÁNO 6 I0830, I0831, I0835, I0841, I0842 Pracovní postup měření výkonu je dohledatelný a úplný
I2068 HOTOVO 0 — Verdikt, který závisí na runneru, to říká, a jeden studený vzorek není regrese
I2660 PŘIPRAVENO 0 — Web se publikuje jako artefakt úlohou, která ho postavila, takže hotový web nečeká na druhý workflow
I2661 PŘIPRAVENO 0 — Publikace, která nedorazila, je nález, na který čtenář narazí příště, nikdy ne zelený krok
I2662 PŘIPRAVENO 0 — Validace opouští runner nasazení: kontroly větve nikdy nedrží pool, který potřebuje publikace nebo záznam release
I2663 PŘIPRAVENO 3 I2489 Publikované UI se při každém nasazení nečte z ničeho
I2664 HOTOVO 0 — Běh, který už selhal, se sám zruší a červená na trunku se opraví dřív, než se cokoli dalšího připraví
I2709 PŘIPRAVENO 1 I2664 Červená na trunku má jednoho pojmenovaného nositele a nikdo jiný nesmí přistát, dokud není zaplacena
I2710 HOTOVO 0 — Běh release nikdy nečeká za validacemi pull requestů na slot úlohy
I2711 HOTOVO 0 — Úloha pages posuzuje produkci až poté, co dorazí nasazení jejího vlastního commitu
I2716 HOTOVO 0 — Případ odvozuje své rozpočty a seznamy z toho, co testuje, nikdy je nepřipíná
I2717 PŘIPRAVENO 0 — Pull request se záznamem release dostane verdikt, který může projít
I2846 PŘIPRAVENO 0 — A hand-pinned budget in a case is reported unless it states its margin
I3018 PŘIPRAVENO 0 — The intent workspace borrows the plan instead of copying it on every request

Graf

Graf závislostí M004z .ai/repo/project
flowchart LR
    I0817["I0817<br/>Phase timing and work counters behind MJ_TIMING"]:::done
    I0818["I0818<br/>The command registry is read in one pass"]:::done
    I0819["I0819<br/>The project model is loaded with one flatten per file and no per-file lookups"]:::done
    I0820["I0820<br/>Catalogue, DAG, context and command-surface validators read their inputs once"]:::ready
    I0821["I0821<br/>Flattened YAML is cached under .ai/local/cache by content hash"]:::ready
    I0822["I0822<br/>Every canonical file is flattened at most once per command"]:::blocked
    I0823["I0823<br/>majordomus bench: targets derived from the command registry"]:::done
    I0824["I0824<br/>Bench persists local runs and keeps a latest projection"]:::done
    I0825["I0825<br/>An explicit committed baseline"]:::done
    I0826["I0826<br/>bench --check refuses a regression by policy"]:::done
    I0827["I0827<br/>The benchmark policy block"]:::done
    I0828["I0828<br/>doctor under a declared budget, and the hook inherits it"]:::blocked
    I0829["I0829<br/>Performance doctrine as project rules"]:::done
    I0830["I0830<br/>docs/PERFORMANCE.md, README, CONTRIBUTING and CLI reference"]:::done
    I0831["I0831<br/>Performance claims at their proven status"]:::blocked
    I0832["I0832<br/>generate-site-data instrumented and its hot spots removed"]:::ready
    I0833["I0833<br/>knowledge nodes and edges read each source once"]:::done
    I0834["I0834<br/>The test runner reports per-case time and the suite budget"]:::blocked
    I0835["I0835<br/>CI runs the structural performance checks"]:::blocked
    I0836["I0836<br/>A synthetic repository generator for scaling cases"]:::done
    I0837["I0837<br/>Timing report as JSON"]:::done
    I0838["I0838<br/>bench compare and the top regressions report"]:::ready
    I0839["I0839<br/>watch inherits every doctor fix and its own budget"]:::blocked
    I0840["I0840<br/>context and its subcommands under a second"]:::blocked
    I0841["I0841<br/>Cache equivalence proved by property-shaped cases"]:::blocked
    I0842["I0842<br/>Before and after evidence for every optimisation"]:::blocked
    I0843["I0843<br/>The performance workflow is discoverable and complete"]:::blocked
    I2068["I2068<br/>A verdict that depends on the runner says so, and one cold sample is not a regression"]:::done
    I2660["I2660<br/>The site is published as an artifact by the job that built it, so a ready site waits for no second workflow"]:::ready
    I2661["I2661<br/>A publication that did not arrive is a finding the next reader meets, never a green step"]:::ready
    I2662["I2662<br/>Validation leaves the deployment a runner: a branch's checks never hold the pool a publication or a release record needs"]:::ready
    I2663["I2663<br/>The published UI is not read from nothing on every deployment"]:::ready
    I2664["I2664<br/>A run that has already failed is cancelled by itself, and a red on the trunk is fixed before anything else is prepared"]:::done
    I2709["I2709<br/>A red on the trunk has one named carrier, and nobody else may land until it is paid"]:::ready
    I2710["I2710<br/>A release run never waits behind pull-request validates for a job slot"]:::done
    I2711["I2711<br/>The pages job judges production only after the deployment of its own commit has arrived"]:::done
    I2716["I2716<br/>A case derives its budgets and lists from what it tests, never pins them"]:::done
    I2717["I2717<br/>A release record pull request gets a verdict that can pass"]:::ready
    I2846["I2846<br/>A hand-pinned budget in a case is reported unless it states its margin"]:::ready
    I3018["I3018<br/>The intent workspace borrows the plan instead of copying it on every request"]:::ready
    I0817 --> I0818
    I0817 --> I0819
    I0817 --> I0821
    I0817 --> I0823
    I0817 --> I0832
    I0817 --> I0833
    I0817 --> I0837
    I0818 --> I0820
    I0818 --> I0822
    I0818 --> I0828
    I0818 --> I0842
    I0819 --> I0820
    I0819 --> I0822
    I0819 --> I0828
    I0819 --> I0832
    I0819 --> I0836
    I0819 --> I0842
    I0820 --> I0822
    I0820 --> I0828
    I0820 --> I0840
    I0820 --> I0842
    I0821 --> I0840
    I0821 --> I0841
    I0822 --> I0831
    I0822 --> I0835
    I0823 --> I0824
    I0823 --> I0827
    I0823 --> I0830
    I0824 --> I0825
    I0825 --> I0826
    I0826 --> I0830
    I0826 --> I0831
    I0826 --> I0835
    I0826 --> I0838
    I0827 --> I0828
    I0828 --> I0834
    I0828 --> I0839
    I0829 --> I0830
    I0830 --> I0843
    I0831 --> I0843
    I0832 --> I0842
    I0833 --> I0842
    I0835 --> I0843
    I0841 --> I0843
    I0842 --> I0843
    I2664 --> I2709
    classDef done stroke:#16a34a,fill:#dcfce7,color:#14532d,stroke-width:2px
    classDef active stroke:#2563eb,fill:#eff6ff,color:#1e3a8a,stroke-width:2px
    classDef verify stroke:#7c3aed,fill:#f5f3ff,color:#4c1d95,stroke-width:2px
    classDef ready stroke:#0891b2,fill:#ecfeff,color:#164e63,stroke-width:2px
    classDef planned stroke:#0891b2,fill:#ecfeff,color:#164e63,stroke-width:2px
    classDef blocked stroke:#b45309,fill:#fffbeb,color:#78350f,stroke-width:2px
    classDef cancelled stroke:#6b7280,fill:#f9fafb,color:#374151,stroke-width:2px
    classDef superseded stroke:#6b7280,fill:#f9fafb,color:#374151,stroke-width:2px

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

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