Přeskočit na obsah

Tato stránka byla automaticky přeložena z angličtiny, jediného jazyka, ve kterém se tento web píše. Číst originál.

Druhé odvození nad týmiž důkazy nic nezapíše, řekne to a nechá pracovní strom beze změny; id záznamu se odvozuje z epizody a výtahu důkazů, takže tentýž fakt vždy skončí v témže souboru

Dvojí spuštění derivéru nad týmž ledgerem a týmž gitem vytvoří podruhé tytéž bajty, ohlásí každý záznam jako nezměněný a nenechá git status nic k zobrazení. Událost konce, událost kompakce i ruční majordomus knowledge derive procházejí stejným zapisovačem, takže kompakce následovaná uzavřením, nebo člověk, který příkaz po hooku spustí znovu, nikdy nevytvoří druhou kopii záznamu.

deklarovaný stavdeklarovaný stav: zaručeno Deklarováno jako deterministické a blokující, implementováno a s uvedeným behaviorálním testem, který to má dokázat. Zda to zaznamenaný běh podporuje, říká verdikt důkazů zobrazený vedle.

zaznamenané důkazyzaznamenané důkazy: nespuštěno Deklarováno jako zaručené, ale nepodložené zaznamenaným během: test je pojmenován, ale žádný úspěšný běh nad současnými vstupy zaznamenán není. jak se zaznamenávají důkazy

Záznam se složí do dočasného souboru ve stejném adresáři a porovná se bajt po bajtu se souborem, který pojmenovává id; shodný se ohlásí jako beze změny a dočasný soubor se odstraní, odlišný se přejmenuje přes původní. Datum je den řádku s důkazem, nikdy hodiny, a do bajtů nevstupuje žádná náhodná hodnota, takže stejný ledger a stejný git dají na každém stroji stejný soubor.

Co to znamená

Dvojí spuštění deriveru nad stejnou účetní knihou a stejným gitem vytvoří podruhé stejné bajty, ohlásí každý záznam jako beze změny a nezanechá nic, co by git status zobrazil. Koncová událost, událost zhutnění a majordomus knowledge derive ručně procházejí týmž zapisovačem, takže zhutnění následované uzavřením nebo člověk, který po hooku příkaz spustí znovu, nikdy nevytvoří druhou kopii záznamu.

Princip

Id záznamu je id epizody následované otiskem kanonického řetězce důkazů — názvu události, úlohy a textu rozhodnutí, otázky nebo výsledku — takže tentýž fakt vždy skončí ve stejném souboru a dva worktree nikdy nezapíší jeden název pro různý obsah. date záznamu je den řádku důkazů, nikdy hodiny, a do souboru nevstupuje žádná náhodná hodnota. Deriver složí záznam do dočasného souboru ve stejném adresáři, porovná jej bajt po bajtu se souborem, který id pojmenovává, dočasný soubor odstraní, když jsou shodné, a přejmenuje jej přes starý, když se liší. Řádek ledgeru knowledge.derived nese oba počty, zapsané i beze změny. --dry-run hlásí, co by se zapsalo, a nedotkne se ani stromu, ani ledgeru.

Jak to vidět

majordomus knowledge derive                             # written .ai/repo/knowledge/candidates/<id>.md
git add .ai/repo/knowledge && git commit -q -m "candidates"
majordomus knowledge derive                             # unchanged .ai/repo/knowledge/candidates/<id>.md
git status --porcelain                                  # empty
majordomus knowledge derive --dry-run                   # says what it would do; the ledger gains no line
majordomus history --event knowledge.derived            # written 0, unchanged 1 on the second line

Co nepokrývá

Idempotence se týká důkazů, ne času: nové rozhodnutí ve stejné epizodě je nový záznam. Kandidát, který byl povýšen nebo odmítnut, se přeskočí, ne přepíše, takže tyto akty přežijí opakovaný běh; kandidát, kterého člověk upravil ručně, se při další derivaci přepíše, protože kanonické jsou důkazy, a ne soubor, dokud je to ještě kandidát.

Proč existuje

Atomický zapisovač, který používá každý lokální záznam, přidává náhodnou příponu a nikdy nepřepisuje, což je správné pro checkpoint a špatné pro záznam, který musí být při každém běhu týž soubor. Deriver, který by při každé hranici zapsal nový soubor, by zaplnil frontu review kopiemi a po každé kompakci by udělal strom špinavým a ledger by tvrdil, že něco zapsal, přestože se nic nezměnilo. .ai/repo/adrs/0091-knowledge-is-derived-at-the-episode-boundary-and-a-person-promotes-it.md fixuje soubor pojmenovaný podle id a zápis přes dočasný soubor a přejmenování.

Detail vykreslený z docs/claims/knowledge-derivation-is-idempotent.md.

Od tvrzení k důkazu

  1. 1 · veřejné tvrzení

    Druhé odvození nad týmiž důkazy nic nezapíše, řekne to a nechá pracovní strom beze změny; id záznamu se odvozuje z epizody a výtahu důkazů, takže tentýž fakt vždy skončí v témže souboru

    Vytvořeno na Layer.

  2. 2 · kanonické tvrzení

    knowledge-derivation-is-idempotentdeklarovaný stav: zaručeno v docs/CLAIMS.yaml

    Definováno v přečtěte si to na tomto webu · docs/KNOWLEDGE.md

  3. 3 · implementace

    lib/knowledge.sh · majordomus knowledge

  4. 4 · test a scénáře

    Test: test/cases/564_knowledge_derivation_is_idempotent.sh

    Provedeno v Uchovat, co se epizoda naučila, bez modelu a bez konverzace.

  5. 5 · zaznamenané běhy

    zaznamenané důkazy: nespuštěno jak se zaznamenávají důkazy

Ověřte si to sami

Test běží v jednorázovém dočasném repozitáři a ověřuje chování, ne řetězec ve zdrojovém kódu.

z klonu repozitáře
bash test/run.sh 564_knowledge_derivation_is_idempotent

Kde se toto tvrzení používá

pokryté odpovědnosti

Související tvrzení stejná implementace

Prohledává názvy a popisy všech stránek, které tento web publikuje.