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.

Živý scénář nevybere holé spuštění usecase, jeho důkazy se zapisují do ignorované lokální poloviny a nikdy nepovýší příkaz na pokrytý; nesplněný závazek se hlásí jako nenaplněný, nikdy jako selhání

Výsledek živého scénáře popisuje jeden strom, na jednom stroji, v jedné minutě. CI nemůže

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

Živý výsledek popisuje jeden strom na jednom stroji v jedné minutě, proto se zapisuje do .ai/local/evidence/live/<id>.json, a ne vedle commitnutých fixture důkazů, a pokrytí jej počítá jako jmenování příkazu, nikdy jako jeho pokrytí. Běh odděluje dva verdikty, protože selhávající fixture scénář je vada nástroje, zatímco nesplněný závazek je neprovedená práce (ADR 38).

Co to znamená

Výsledek živého scénáře popisuje jeden strom, na jednom stroji, v jedné minutě. CI jej nedokáže reprodukovat, takže s ním nic navazujícího nesmí zacházet jako s reprodukovatelnými důkazy:

  • majordomus usecase run bez argumentů spouští fixtury a jen fixtury a pro zbytek vypíše live (run it with --live), takže to, co CI rozumí holým během, se nezmění pod repozitářem, který přidá živý scénář;
  • --live je přidá a pojmenování id jej spustí bez ohledu na jeho režim;
  • živé důkazy se zapisují do .ai/local/evidence/live/<id>.json, které lokální polovina ignoruje, ne vedle commitnutých fixture důkazů pod .ai/local/evidence/use-cases/;
  • usecase coverage počítá živý scénář jako ten, který své příkazy pojmenovává, a nikdy jako ten, který je pokrývá, takže příkaz, který cvičí jen živý scénář, zůstává partial;
  • závazek, který repozitář nesplnil, se hlásí jako unmet, ne fail.

Poslední rozlišení je smyslem oddělení: selhávající scénář fixture je závada nástroje a nesplněný závazek je nevykonaná práce. Hlásit obojí stejným slovem by jedno z toho učinilo nečitelným.

Princip

mj_uc_selected v lib/usecase.sh vrací false pro živý scénář, pokud nebyl jmenován nebo nebylo zadáno --live. mj_uc_cmd_run nastaví MJ_UC_LIVE_EVIDENCE na $MJ_AI_LOCAL_DIR/evidence/live, spouští živé scénáře po jednom po fixturách a živý exit 10 počítá do unmet, a ne do failed; souhrnný řádek i dokument JSON nesou oba počty zvlášť. mj_uc_coverage_rows zvyšuje počet spustitelných jen tehdy, když scénář není živý, takže mj_uc_status_of se z živých scénářů samotných nemůže nikdy dostat na covered.

Jak to vidět

majordomus usecase run                     # live scenarios are listed, not run
majordomus usecase run --live              # exit 10 when an obligation is unmet
jq '.mode, .result' .ai/local/evidence/live/know-whether-this-work-is-finished.json
majordomus usecase coverage --json | jq '.rows[] | select(.status == "partial")'
bash test/run.sh 359_live_scenarios

test/cases/359_live_scenarios.sh dokazuje každou polovinu: že holý běh nezapisuje žádné živé důkazy, že --live je zapíše tam, kde je git ignoruje, a sledovaný strom nechá nedotčený, že nesplněný závazek se počítá jako unmet a ne jako failed, a že příkaz, který spouští živý scénář, zůstává v pokrytí partial.

Co nepokrývá

Drží důkazy živého běhu mimo sledovaný strom; netrvanlivěji je neukládá. .ai/local/evidence/live/ patří tomuto checkoutu, takže jiný worktree, jiný stroj i čerstvý klon začínají bez nich a nic je nereplikuje. Důkaz, který musí checkout přežít, je spuštění v účetní knize, které zapisuje evidence record.

Omezuje, kde se odpověď zapisuje, ne jak dlouho platí. Živá odpověď popisuje repozitář v okamžiku, kdy se na ni zeptali; nic zde ji neprošetřuje ani nezaznamená, že se strom od té doby pohnul. Zastaralost je otázka subsystému důkazů a proof-is-an-execution je místo, kde se na ni odpovídá.

A nedělá ze živého scénáře započítaný scénář. Živý běh zůstává z konstrukce partial v pokrytí, takže příkaz, jehož jediný scénář je živý, se hlásí jako ne plně pokrytý — to je zamýšlené čtení, ne mezera, kterou toto tvrzení zavírá.

Proč existuje

Případ užití, který klade své otázky repozitáři, v němž byl vyvolán, produkuje odpověď o něčí rozdělané práci a prvním místem, kam by taková odpověď přistála, byly vlastní publikované důkazy repozitáře — kde by se četla jako vlastnost projektu, a ne jednoho stroje v jedné minutě. Zápis pod .ai/local/, který vrstva už deklaruje jako nikdy nepublikovaný, drží živou odpověď dostupnou tomu, kdo se ptal, a neviditelnou pro všechny, kdo repozitář čtou.

Detail vykreslen z docs/claims/live-scenario-evidence-is-local.md.

Od tvrzení k důkazu

  1. 1 · veřejné tvrzení

    Živý scénář nevybere holé spuštění usecase, jeho důkazy se zapisují do ignorované lokální poloviny a nikdy nepovýší příkaz na pokrytý; nesplněný závazek se hlásí jako nenaplněný, nikdy jako selhání

    Vzniklo na Doctor.

  2. 2 · kanonické tvrzení

    live-scenario-evidence-is-localdeklarovaný stav: zaručeno v docs/CLAIMS.yaml

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

  3. 3 · implementace

    lib/usecase.sh · majordomus usecase

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

    Test: test/cases/359_live_scenarios.sh

  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 359_live_scenarios

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.