I0807 — Objevovat zdroje znalostí z gitu, ne ze souborového systému
Implementovat fázi discovery v lib/knowledge.sh: deklarovaný seznam tříd zdrojů, každá s rozsahem shared nebo operational, rozlišený přes git ls-files pro sledované artefakty repozitáře a přes známé cesty stavu pro provozní záznamy, vytvářející deterministicky seřazený seznam zdrojů s jejich hashi obsahu.
HOTOVO vlna 1 · p1 · profil implementation · bezpečné paralelně
Součást M003 — Relace je trvalá obálka a znalost se kompiluje z toho, co už je kanonické.
Cíl
Implementovat fázi discovery v lib/knowledge.sh: deklarovaný seznam tříd zdrojů, každá s rozsahem shared nebo operational, rozlišený přes git ls-files pro sledované artefakty repozitáře a přes známé cesty stavu pro provozní záznamy, vytvářející deterministicky seřazený seznam zdrojů s jejich hashi obsahu.
Proč
Rekurzivní průchod souborovým systémem indexuje vendorované stromy, výstup buildu, odpad editorů a nesledované soubory, které nikdy neměly být znalostí, a na dvou strojích dává různou odpověď. git ls-files odpovídá pravdou repozitáře, ve stabilním pořadí, a je už hranicí, kterou tento projekt považuje za autoritativní.
Aktuální stav
Nic v lib/ nevypisuje soubory repozitáře. scripts/generate-site-data deklaruje své kanonické vstupy, což je precedent pro deklarovaný seznam zdrojů místo procházení.
Cílový stav
`knowledge sources` vypíše každý objevený zdroj s jeho třídou, rozsahem a hashem, v deterministickém pořadí, a tentýž repozitář vyprodukuje týž seznam dvakrát. Nesledovaný soubor není zdroj. Cesty provozního stavu se přidávají výslovně a jsou označeny jako provozní, nikdy sdílené.
Rozsah
- lib/knowledge.sh
- bin/majordomus
- test/cases/64_knowledge_discovery.sh
Mimo rozsah
- Extrakce, uzly, hrany
- Jakýkoli rekurzivní průchod skrytým adresářem
- Indexování cesty jen proto, že existuje
Závislosti
Co na tom čeká
Kritéria přijetí
- Třídy zdrojů jsou deklarovány na jednom místě a každá nese svůj rozsah
- Discovery řídí git pro sledované zdroje a případ dokazuje, že nesledovaný soubor je vyloučen
- Pořadí výstupu je deterministické a nezávislé na pořadí souborového systému
- Cesta obsahující mezeru nebo znak mimo ASCII se zpracuje bez rozdělení
- Deklarovaná třída zdroje, která nic neobjeví, se hlásí, takže zapomenutá cesta je vidět
Validace
- bash test/run.sh 64_knowledge_discovery
- shellcheck -x -s bash lib/knowledge.sh
Požadované důkazy
- discovery_deterministic
Důkazy
| pokrývá | typ | command | výsledek | u commitu |
|---|---|---|---|---|
| discovery_deterministic | test | test/run.sh 64_knowledge_discovery | 1 passed, and the four cases the new command affected — 15_command_surface, 26_ci_wiring, 28_no_hardcoded_values, 51_derived_artifacts_committed — pass with it. Případ dokazuje, že nesledovaný soubor nikdy není zdrojem, že vendorované a sestavené stromy jsou vyloučeny, protože nejsou sledovány, že dva běhy se shodují a dotčený soubor jejich pořadí nezmění, že úprava jednoho zdroje změní jen jeho vlastní hash, že cesta s mezerami a znaky mimo ASCII dá právě jeden řádek, že žádný soubor neobjeví dvě třídy, že povinná třída, která nic neobjeví, je WARN, a že každé čtení nechá pracovní strom byte po bytu totožný | 34cd249 |
Riziko
Zde žije historická třída chyb s mezerami. Každá cesta přečtená z gitu se musí číst bezpečně vůči NUL nebo s explicitním oddělovačem polí, nikdy přes nekvótované dělení slov.
Časová osa
- zahájeno
- 2026-09-04T16:31:17Z
- ověřeno
- —
- dokončeno
- 2026-09-04T17:01:31Z
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/I0807.yaml. Přečtěte jej zpět pomocí majordomus plan show I0807.