I0819 — Model projektu se načítá jedním zploštěním na soubor a bez vyhledávání pro každý soubor
Zařídit, aby mj_project_load a mj_project_unknown_keys četly každý milník a úkol jednou a kontrolovaly id a neznámé klíče uvnitř awk místo subprocesu na soubor a na klíč.
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
Zařídit, aby mj_project_load a mj_project_unknown_keys četly každý milník a úkol jednou a kontrolovaly id a neznámé klíče uvnitř awk místo subprocesu na soubor a na klíč.
Proč
Validátor projektu stojí 3,5 s doctoru a plan validate 4,4 s na 73 záznamech; počet roste s plánem.
Aktuální stav
Každý záznam se zploští, poté se čte zpět pomocí mj_yget při každé kontrole a znovu se čte pro sestavení raw.tsv.
Cílový stav
Jedno zploštění a jeden awk na záznam, neznámé klíče počítá jeden awk nad plochým adresářem proti seznamům povolených.
Rozsah
- lib/project.sh
- lib/doctor.sh
- lib/plan.sh
- test/cases/40_project_model.sh
- test/cases/41_project_status.sh
- test/cases/43_plan_command.sh
Mimo rozsah
- Jakákoli změna sémantiky modelu v project.awk
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í
- I0832PŘIPRAVENO generate-site-data je instrumentován a jeho úzká místa odstraněna
- I0836HOTOVO Generátor syntetického repozitáře pro škálovací případy
- I0842BLOKOVÁNO Důkazy před a po pro každou optimalizaci
Kritéria přijetí
- validate:project pod 400 ms a plan validate pod 1 s na tomto repozitáři
- Případy 40 až 48 procházejí beze změny
Validace
- MJ_TIMING=1 bin/majordomus plan validate
- bash test/run.sh 40_project_model
Požadované důkazy
- batch_reads
Důkazy
| pokrývá | typ | command | výsledek | u commitu |
|---|---|---|---|---|
| batch_reads | test | MJ_TIMING=1 bin/majordomus plan validate | mj_yaml_unknown_keys je jeden řez a jeden grep na soubor místo jednoho grepu na klíč a kontrola id záznamu jede na průchodu awk, který emituje řádky modelu; na tomto repozitáři validate:project klesl z 3483 ms na 452 ms, doctor z 10,0 s na 3,9 s a plan validate z 4,4 s na 1,1 s se stejnými zjištěními; úkol, jehož id nesouhlasí s názvem souboru, je stále odmítnut jménem; případy 02, 16, 24, 40, 41, 43, 44, 45 a 47 procházejí beze změny | next |
Riziko
Detekce neznámého klíče přesunutá do awk musí zachovat stejnou sémantiku allow-listu; případ 44 mutuje záznam a očekává odmítnutí.
Časová osa
- zahájeno
- 2026-09-05T02:06:00Z
- ověřeno
- 2026-09-05T02:16:00Z
- dokončeno
- 2026-09-05T02:16: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/I0819.yaml. Načtěte ho zpět pomocí majordomus plan show I0819.