Zdůvodnění
Veřejná stránka omezení začínala větou „Co v0.1 nedělá“, zatímco web vedle ní nabízel v0.13.0. Nikdo nenapsal nic nepravdivého: věta byla pravdivá v den, kdy byla napsána, a pak se verze pod ní posunula. Stejný štítek připínal popis plánu rozvoje, reference schémat a příkazů, čtyři stránky tvrzení a souhrn dokumentu o ekonomice a seznam, který uvozoval, zastaral s ním — nástroj získal hooky relací, měření tokenů a tvrzení napříč stroji, zatímco stránka dál tvrdila, že nic z toho nemá.
Verze se píše jednou a všude jinde se odvozuje (project.release-is-a-projection) a diagnóza toho pravidla se dívala jen tam, kde žijí soubory samotného nástroje. Próza byla posledním místem, kde mohla být verze uvedena ručně, a štítek tam je nejhorším druhem tvrzení: čte se jako rozsah („ve v0.1 se to nevynucuje“), který nikdo nepřezkoumává, protože pisateli nic neřekne, že rozsah skončil.
Požadované chování
- Ručně psaná próza — README a bootstrap soubory,
docs/, autorské stránky webu, data a šablony, vlastní dokumenty vrstvy a šablony poskytovatelů — nejmenuje žádný štítek verze:v, major a minor, a žádný patch (v0.1,v1.2). - Vydaná verze se jmenuje jako záznam, kterým je, třemi čísly (
v0.3.1), a jen když věta pojednává o tom releasu. Taková zmínka je historie a zůstává pravdivá. - Dokument, který je o minulé verzi — specifikace z fáze návrhu, zpráva o tom, jak vznikla, datovaná revize — se deklaruje v
.ai/repo/version-label-history.txt, jeden<path> <reason>na řádek. Důvod je povinný. - Generované soubory a datované záznamy vrstvy (
.ai/repo/adrs/,.ai/repo/sessions/) nejsou ručně psaná próza: popisek v projekci se nachází ve svém zdroji.
Chování při selhání
release::version::diagnose hlásí version-label-in-prose (chybu) pro každý štítek v ručně psané próze mimo historii, se jménem souboru a řádku, a version-label-history-invalid (chybu) pro záznam historie bez důvodu, jmenující cestu, která není sledovanou ručně psanou prózou, a ten, jehož dokument už štítek nenese — seznam se drží z obou stran, takže nemůže přežít to, co vyjímá. bin/majordomus-cli release version je vypíše a skončí s kódem 10 a kontrola version-authored-once jej spouští při každém plánu.
Co nezachytí, uvedeno místo naznačování: trojdílná verze použitá jako rozsah („jak implementováno ve v0.3.1“) se čte přesně jako zmínka o tom releasu a tvrzení v přítomném čase, které zastaralo bez jakékoli verze vedle sebe. První je věcí review; druhé je důvod, proč každé omezení jmenuje své důkazy.
Ověření
bin/majordomus-cli release version # the version-authored-once gate
bash test/run.sh 900_prose_states_no_version
test/cases/900_prose_states_no_version.sh dokazuje odmítnutí na fixture repozitáři — odmítnutý štítek, povolená zmínka o release a deklarovaná historie a každý neplatný záznam historie odmítnutý — a že vlastní próza tohoto repozitáře je čistá.