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.

Tvrzení, které deklaruje záruku, již žádný zaznamenaný běh nepodporuje, pojmenuje kontrola, místo aby se zobrazilo jako zaručené

majordomus evidence show --check skončí kódem 10, pokud některé tvrzení deklarující status: guaranteed

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: zastaralé 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

`majordomus evidence show --check` skončí s kódem 10 u každého zaručeného tvrzení, které důkazy nepodporují, a `scripts/evidence-check` to hlídá proti .ai/repo/evidence-baseline.txt, který eviduje stav po jednotlivých tvrzeních, nikoli seznam jmen. Selhat mohou dvě věci: záruka, kterou baseline vedla jako podloženou a která už není, a podložená záruka, která z matice zmizela. Tvrzení, které baseline nikdy neznala a které nemá zaznamenaný běh, je nový dluh — pojmenovaný a započítaný, nikdy regrese — protože západka, která by střílela na růst, by zdaňovala sepisování tvrzení. Kontrola je poradní, dokud baseline nese nepodložené řádky, a `--strict` je cílový stav; posuzuje se pouze `guaranteed`, protože advisory, planned a rejected už samy říkají, že aktuální důkaz není tím, co tvrdí.

Co to znamená

majordomus evidence show --check skončí s exit 10, když je jakékoli tvrzení deklarující status: guaranteed ve stavu, který zaznamenané důkazy nepodporují, a každé pojmenuje s důvodem a příkazem, který by to vyřešil. scripts/evidence-check vykreslí tutéž odpověď a ratchetuje ji proti .ai/repo/evidence-baseline.txt, takže záruka, která ztratí důkazy, je selhání, zatímco dluh, který už existoval, je znám a neblokuje.

Posuzují se pouze tvrzení guaranteed. advisory uvádí, že vynucování není zvenčí pozorovatelné, planned že chování zatím nic neimplementuje a rejected že ho nebude implementovat nic; požadovat aktuální důkaz o tom by znamenalo požadovat důkaz o věci, o které tvrzení samo říká, že tam není.

Princip

Ze sedmi stavů důkazu jsou tři, které za sebou mají prošlý běh — proven, inputs_unchanged a stale — přijaty jako podpora a nikdy se netisknou jako totéž. Ostatní čtyři jsou zjištění: failing, protože tvrzení zaručuje chování, jehož test naposledy selhal; not_run, protože jmenuje test, jehož běh nebyl nikdy zaznamenán; unrunnable, protože jmenuje cestu, kterou nehýbe žádný runner, takže žádné její provedení nemůže existovat; a no_test, protože nejmenuje žádný test. Každé zjištění nese tvrzení, stav, který deklaruje, stav, který důkazy podporují, důvod slovy a příkaz k reprodukci, kdyby věc rozhodlo spuštění něčeho.

scripts/evidence-check sám nic neodvozuje. Ptá se executable na evidence show --format json a nálezy čte z jeho odpovědi, protože kontrola s druhým názorem na to, co je dokázáno, by byla druhým modelem důkazu. Vypisuje součty za celou matici, nejen selhání, takže čtenář vidí tvar důkazů a kdy byly naposledy zaznamenány. Bez buildu skončí s 12 a řekne to, místo aby tiše prošla.

Ratchet není členství v seznamu jmen. Byl, a vadou nebyla přísnost, ale toto: baseline pojmenovává záruky, které byly nepodložené v den jeho zápisu, takže tvrzení napsané po tomto dni v něm chybí z jediného důvodu, proč může tvrzení chybět ve snímku minulosti — ještě neexistovalo. Při členství bylo každé nově sloučené zaručené tvrzení hlášeno jako ztráta důkazů, které nikdy nemělo, a zčervenalo kmen pro každou větev, která se sloučila potom. Ratchet, jehož poplach zazní při růstu, a ne při regresi, měří špatnou věc.

Baseline tedy zaznamenává stav pro každé tvrzení — řádek + pro záruku, kterou běh podpořil, holý řádek pro tu, kterou žádný běh nepodpořil — a kontrolu shodí dvě věci. Ztraceno: tvrzení, které baseline zaznamenala jako podpořené a důkazy ho už nepodporují; mělo důkaz a nyní nemá, a členství to nikdy nemohlo vidět, protože tvrzení, které ztratí důkaz, se přidá do množiny nepodpořených přesně jako nové tvrzení. Staženo: podpořená záruka, která už vůbec není zaručeným tvrzením matice; nic se nestalo nedokázaným, jen se zmenšil jmenovatel, a tak ratchet shnije, aniž by kdy zčervenal.

Zaručené tvrzení, které základní stav (baseline) neznal a které přijde bez zaznamenaného běhu, se ohlásí a započítá jako nový dluh, ale kontrolu neshodí — jeho odmítnutí je chybné chování popsané výše. Přijímá ho scripts/evidence-check --baseline, ve vlastním commitu a s odůvodněním. Řádek baseline, který je nyní podložený, se ohlásí, aby se seznam zužoval, místo aby zahnil. Soubor zapisuje --baseline a nikdy se nepíše ručně; jeho nepodložená polovina se zmenšuje jen jedním směrem — zaznamenáním běhu, který tvrzení dokládá, nikdy přidáním řádku.

Kontrola je deklarována v .ai/repo/ci/gates.yaml pod jobem structure s always: true a třída změn evidence do ní směruje ledger, základní hodnotu, kontrolu, matici, stránky tvrzení a docs/EVIDENCE.md.

Jak to vidět

majordomus evidence show --check                  # exit 10 with the unsupported guarantees
majordomus evidence show --findings --format json # the findings alone, with reasons
scripts/evidence-check                            # the ratcheted verdict, with the tallies
scripts/evidence-check --strict                   # every unsupported guarantee fails
scripts/evidence-check --baseline                 # rewrite the baseline from what is found now
scripts/evidence-check --repo PATH                # judge that repository instead of this one

Filtrování nikdy nezužuje součty: odpověď ukazující jedno tvrzení stále hlásí, kolik matice bylo zkoumáno, takže filtrované čtení nemůže zkreslit pokrytí.

Co nepokrývá

Dnes je poradní a tvrdit něco jiného by bylo druhem tvrzení, které tento subsystém existuje, aby odmítal. Ledger začíná prázdný, takže v den příchodu kontroly bylo každé zaručené tvrzení not_run — pravdivě, a jako blokující kontrola by to znamenalo, že nikdo nemůže nic mergovat, dokud nebude zaznamenán běh celé sady. Každé z těchto tvrzení je v základu, takže to, co kontrola právě teď odmítá, je záruka, která ztratila důkaz nebo opustila matici, ne nedokázaná záruka. Nové nedokázané záruky se pojmenují a počítají a nezpůsobují selhání. --strict ignoruje základ a selže na všech; je to koncový stav, dosažitelný, až bude nepodporovaná polovina základu prázdná, a CI na něj tehdy přepne.

Kontrola nic nespouští. Čte, co bylo zaznamenáno, takže tvrzení doložené během, který nikdo nezaznamenal, se nedá odlišit od takového, který nikdo nespustil, a nápravou nálezu je spustit jmenovaný příkaz a zaznamenat jej — nebo opravit, co se rozbilo.

Posuzuje deklarovaný stav proti důkazům, ne tvrzení proti realitě. Zda pojmenovaný test skutečně zkouší tvrzenou větu, je otázka pro review, kterou drží project.no-claim-without-test; záruka stale kontrolou projde, protože důkaz starší než jeho předmět je stále důkaz, který byl vytvořen.

A není to kontrola proti manipulaci. Ledger je trackovaný soubor, ručně upravený výsledek je řádek v diffu a kontrola věří tomu, co ledger říká.

Proč existuje

Záruka je to nejsilnější, co tento repozitář o sobě říká, a byla jedinou věcí, kterou nic nekontrolovalo: matice mohla deklarovat chování jako zaručené, pojmenovat test a být publikována jako záruka, aniž za ní kdekoli stál nějaký běh. Zviditelnění muselo přijít před tím, než se z toho stane fatální chyba, protože kontrola, která blokuje v den příchodu, je kontrola, která se vypne. Dluh se tedy změřil, jednou zapsal a donutil klesat jedním směrem — čímž se kontrola, kterou nikdo nesplní, stává kontrolou, kterou nikdo nezhorší.

Detail vykreslený z docs/claims/evidence-unsupported-guarantee-is-reported.md.

Od tvrzení k důkazu

  1. 1 · veřejné tvrzení

    Tvrzení, které deklaruje záruku, již žádný zaznamenaný běh nepodporuje, pojmenuje kontrola, místo aby se zobrazilo jako zaručené

    Vzniklo na Důkazy.

  2. 2 · kanonické tvrzení

    evidence-unsupported-guarantee-is-reporteddeklarovaný stav: zaručeno v docs/CLAIMS.yaml

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

  3. 3 · implementace

    scripts/evidence-check

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

    Test: test/cases/124_evidence.sh

  5. 5 · zaznamenané běhy

    zaznamenané důkazy: zastaralé 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 124_evidence

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