I0811 — Vyhledávání znalostí pouze pro čtení s pořadím, které lze vysvětlit
Implementovat `knowledge search`, `knowledge show` a `knowledge related`: deterministické vyhledávání ve vygenerovaném indexu s zdokumentovaným, otestovaným pořadím shody, výstup JSON, který u každého výsledku uvádí pole, podle kterého se shodoval, a žádný zápis jakéhokoli druhu.
HOTOVO vlna 4 · p1 · profil implementation · běží samostatně
Součást M003 — Relace je trvalá obálka a znalost se kompiluje z toho, co už je kanonické.
Cíl
Implementovat `knowledge search`, `knowledge show` a `knowledge related`: deterministické vyhledávání ve vygenerovaném indexu s zdokumentovaným, otestovaným pořadím shody, výstup JSON, který u každého výsledku uvádí pole, podle kterého se shodoval, a žádný zápis jakéhokoli druhu.
Proč
Dotaz, který přestavuje index, mění repozitář jako vedlejší účinek kladení otázky, čímž se příkaz jen pro čtení stává zápisem a rozbíjí každý následující řádek reprodukce. A pořadí relevance, které nikdo neumí vysvětlit, nikdo neumí ladit; pořadí musí být pravidlo, ne skóre.
Aktuální stav
`majordomus search` je doslovný grep přes šest provozních druhů záznamů a tuto smlouvu musí zachovat beze změny. Nic neprohledává kanonické artefakty repozitáře.
Cílový stav
`knowledge search` řadí podle explicitního žebříčku — přesné kanonické id, přesný titul, prefix titulu, cesta, tag, pak doslovná shoda v těle — a u každého výsledku hlásí shodné pole. `knowledge show` vypíše jeden uzel s cestou ke zdroji a hashem. `knowledge related` vypíše hrany do jednoho uzlu a z něj s jejich původem. Zastaralý index se hlásí, nikdy se tiše nepřestavuje.
Rozsah
- lib/knowledge.sh
- bin/majordomus
- docs/CLI.md
- test/cases
Mimo rozsah
- Jakákoli změna chování stávajícího příkazu search
- Embeddingy, podobnost nebo jakékoli neprůhledné skóre
- Opětovné sestavení indexu ze čtení
Závislosti
Co na tom čeká
- I0812HOTOVO Validovat graf a nechat doctor i watch ptát se téhož validátoru
- I0814HOTOVO Dát workeru omezený výřez znalostí, ne celou znalostní bázi
Kritéria přijetí
- Žebříček shody je zdokumentován a případ ověřuje pořadí pro dotaz, který se shoduje na dvou úrovních
- Výstup JSON nese id, druh, název, zdroj a shodné pole každého výsledku
- Spuštění každého příkazu znalostí pouze pro čtení nechá git status bajt po bajtu shodný
- Zastaralý index každý příkaz čtení ohlásí jako zastaralý a žádný z nich ho nepřestaví
- Výstup a návratové kódy stávajícího příkazu search jsou beze změny, což dokazuje, že jeho vlastní případ stále prochází
Validace
- bash test/run.sh 69_knowledge_query
- bash test/run.sh 24_prompt_search
Požadované důkazy
- query_explainable
- readonly_proven
Důkazy
| pokrývá | typ | command | výsledek | u commitu |
|---|---|---|---|---|
| query_explainable | test | test/run.sh 3037_a_knowledge_lookup_explains_its_order | ok na feature/a-knowledge-lookup-explains-its-order na master 97c4521f91 (2026-10-14 20:0xZ): knowledge search uvádí svůj žebříček [id, title, title-prefix, path, body] v --json, vrací čtyři testovací uzly v tomto pořadí, každý s matched a rung, dotaz shodující se s jedním uzlem na dvou úrovních (jeho přesné id a tělo dokumentů, které jej jmenují) zařadí jednou na příčku id a na stejnou otázku odpoví dvakrát bajt po bajtu shodně; každý výsledek nese id, kind, title, source a matched. Zdokumentováno v docs/CLI.md pod majordomus knowledge. | 97c4521 |
| readonly_proven | test | test/run.sh 3037_a_knowledge_lookup_explains_its_order 24_prompt_search 64_knowledge_discovery 15_command_surface | 4 ok na master 97c4521f91 plus tato změna (2026-10-14 20:0xZ). Případ 3037 spouští search, show a related a tvrdí, že porcelánový stav pracovního stromu je po nich stejný jako před nimi; neexistuje uložený index, který by mohl zastarat, protože každé volání kompiluje z indexu správy verzí stejně jako knowledge nodes, takže žádné z nich nic znovu nestaví ani nezapisuje. show a related skončí kódem 12 pro neznámé id a search skončí kódem 2 bez dotazu. Případ 24 (stávající příkaz search) stále prochází beze změny; 15 drží povrch příkazů se search/show/related deklarovanými jako pouze pro čtení v share/commands.yaml. | 97c4521 |
Riziko
Dva příkazy nyní obsahují slovo search s různými korpusy a různými kontrakty. Není-li rozdíl uveden tam, kde ho pracovník čte, použije se ten špatný a odpověď vypadá jako absence.
Časová osa
- zahájeno
- 2026-10-14T20:17:07Z
- ověřeno
- 2026-10-14T20:18:06Z
- dokončeno
- 2026-10-14T20:18:28Z
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/I0811.yaml. Přečtěte ho zpět pomocí majordomus plan show I0811.