I1110 — Druhý běh nic nemění a test to dokazuje
Učinit sladění idempotentním: jeho spuštění proti vyhovujícímu repozitáři nevytvoří žádnou změnu a dokázat to testem, nikoli pozorováním.
BLOKOVÁNO vlna 5 · p0 · profil implementation · bezpečné paralelně
Blokováno. Tento úkol nemůže začít, dokud není I1109 hotovo. Stav je z toho odvozen, ne deklarován.
Cíl
Učinit sladění idempotentním: jeho spuštění proti vyhovujícímu repozitáři nevytvoří žádnou změnu a dokázat to testem, nikoli pozorováním.
Proč
Idempotence odděluje reconciler od skriptu, který se náhodou spustí dvakrát. Je to také nejlevnější možný regresní test celého stroje požadovaného stavu: pokud druhý běh něco udělá, první udělal něco, co nedokázal popsat.
Aktuální stav
Inicializace není idempotentní a nic neměří, zda je.
Cílový stav
Druhé sladění hlásí nula změn, pracovní strom je bajtově identický a test selže ve chvíli, kdy to přestane platit.
Rozsah
- test/cases
Mimo rozsah
- Dosažení klidu tím, že druhý běh přeskočí práci, kterou měl udělat
- Ignorování rozdílu, protože je jen ve vygenerovaném souboru
Závislosti
Co na tom čeká
- I1116BLOKOVÁNO Vlastní stopa tohoto repozitáře se přesouvá přes reconciler
- I1118BLOKOVÁNO Každý invariant tohoto milníku je pravidlo s kontrolou, která běží
- I1122BLOKOVÁNO Cizí repozitář, převzatý, povýšený a vrácený
Kritéria přijetí
- Dvojí smíření vyhovujícího repozitáře zanechá strom bajtově shodný, včetně každého generovaného artefaktu
- Druhý běh hlásí žádnou změnu, místo aby hlásil změny, které pak neprovede
- Test pokrývá repozitář, který už byl adoptován, repozitář adoptovaný starší verzí a repozitář, kde člověk upravil bridge
- Záměrná divergence způsobí selhání testu, čímž se dokáže, že selhat umí
Validace
- bash test/run.sh
- majordomus init --dry-run
Požadované důkazy
- second_run_empty
- negative_test
Důkazy
Nic nezaznamenáno. Za každým tokenem výše musí stát příkaz nebo artefakt, než lze tento úkol dokončit; vyprávění se odmítá.
Riziko
Snadný způsob, jak tento test splnit, je zařídit, aby druhý běh z principu nedělal nic. Test musí rozlišit reconciler, který nenašel nic k práci, od toho, který se nepodíval.
Časová osa
- zahájeno
- —
- ověřeno
- —
- dokončeno
- —
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/I1110.yaml. Přečtěte jej zpět přes majordomus plan show I1110.