I0818 — Registr příkazů se čte jedním průchodem
Nahradit vyhledávání awk po indexech a polích v mj_cmdreg_public, mj_cmdreg_ids a registru událostí jedním průchodem awk pro každé a číst je jednou za proces.
HOTOVO vlna 1 · p0 · profil implementation · běží samostatně
Součást M004 — Výkon je spustitelný důkaz a horká cesta nedělá žádnou kanonickou práci dvakrát.
Cíl
Nahradit vyhledávání awk po indexech a polích v mj_cmdreg_public, mj_cmdreg_ids a registru událostí jedním průchodem awk pro každé a číst je jednou za proces.
Proč
Pokrytí příkazů stojí tři sekundy, protože mj_cmdreg_public spouští desítky procesů awk a volá se uvnitř smyčky přes deklarované příkazy.
Aktuální stav
mj_cmdreg je jeden awk na klíč; mj_cmdreg_public jej prochází ve smyčce; mj_validate_command_coverage volá mj_cmdreg_public pro každý deklarovaný příkaz.
Cílový stav
Každý registr je zploštěn jednou a jeho veřejná id a dispečerská tabulka se odvozují jedním awk; validátor pokrytí čte všechny hlavičky případů jedním průchodem.
Rozsah
- lib/commands.sh
- lib/common.sh
- test/cases/30_command_registry.sh
- test/cases/31_command_coverage.sh
Mimo rozsah
- Změna share/commands.yaml
Závislosti
Co na tom čeká
- I0820PŘIPRAVENO Validátory katalogu, DAG, kontextu a povrchu příkazů čtou své vstupy jednou
- I0822BLOKOVÁNO Každý kanonický soubor se na příkaz zploští nejvýše jednou
- I0828BLOKOVÁNO doctor pod deklarovaným rozpočtem a hook jej zdědí
- I0842BLOKOVÁNO Důkazy před a po pro každou optimalizaci
Kritéria přijetí
- validate:command_coverage a validate:command_surface každá pod 200 ms v tomto repozitáři
- Případy 30, 31, 35 a 36 procházejí beze změny
- počet yaml_flatten pro doctor neroste
Validace
- MJ_TIMING=1 bin/majordomus doctor
- bash test/run.sh 31_command_coverage
Požadované důkazy
- batch_reads
Důkazy
| pokrývá | typ | command | výsledek | u commitu |
|---|---|---|---|---|
| batch_reads | test | MJ_TIMING=1 bin/majordomus doctor | validate:command_coverage se na tomto repozitáři zkrátil z 3080 ms na 74 ms a validate:command_surface z 352 ms na 141 ms; mj_cmdreg_public a mj_cmdreg_ids jsou po jednom awk, validátor pokrytí čte všechny hlavičky případů jedním průchodem a veřejný seznam jednou, validátor plochy čte dispečerskou tabulku jednou a mj_event_index je jeden průchod; případy 15, 22, 30, 31, 33, 35 a 36 procházejí beze změny, včetně mutací, které odstraní položku registru a přidají příkaz jen v dispečerovi | 3a39694 |
Riziko
Dávkové čtení musí vytvořit přesně výsledky po klíčích; důkazem jsou případy, které mění registr.
Časová osa
- zahájeno
- 2026-09-05T01:50:00Z
- ověřeno
- 2026-09-05T02:05:00Z
- dokončeno
- 2026-09-05T02:05:00Z
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/I0818.yaml. Načtěte ho zpět pomocí majordomus plan show I0818.