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.

I1402 — Nález říká, který z šesti stavů našel, a stav, který mohl skrýt úpravu člověka, už mezi nimi není

Odvodit typovaný stav každého promítnutého záznamu ze dvou nezávislých otázek — přepsal člověk generovanou oblast od jejího zveřejnění a posunul se od té doby kanonický záznam? — a vykázat odpověď místo sloučení obou do jednoho slova.

HOTOVO vlna 1 · p1 · profil implementation · běží samostatně

Součást work-graph-github — Projekce na GitHub je řízená, identifikovaná a průchodná a sloučený pull request vede zpět k výsledku, kterému sloužil.

Cíl

Odvodit typovaný stav každého promítnutého záznamu ze dvou nezávislých otázek — přepsal člověk generovanou oblast od jejího zveřejnění a posunul se od té doby kanonický záznam? — a vykázat odpověď místo sloučení obou do jednoho slova.

Proč

Kontrola hlásila `missing` a `body` a nic jiného a to druhé slovo skrývalo vadu. Adaptér deklaruje, že nepřepíše to, co člověk napsal uvnitř generované oblasti, a rozhodoval o tom porovnáním hashe značky na remote s kanonickým hashem: pokud se lišily, vrátil se předčasně. Ochrana tedy byla slepá přesně v případě, pro který je. Člověk upraví oblast, plán se pak posune a další --apply přeroste jeho slova kanonickým textem bez --force a bez jediného varování. Značka zaznamenává, jako co bylo tělo odesláno, takže na otázku se dalo vždy odpovědět proti značce, a ne proti kanonickému záznamu.

Aktuální stav

region_edited() vracelo false vždy, když se kanonický záznam posunul, takže `edited` bylo v běžném případě nedosažitelné. Nálezy o vzdáleném záznamu, který tvrdí neznámé kanonické id, se tiskly z uvnitř pipeline, tedy ze subshellu, takže počet driftu je nikdy neviděl a --check na nich nemohl selhat.

Cílový stav

insync, behind, edited, conflict, adopt a missing pro kanonický záznam a unmanaged pro vzdálený. --apply přepíše behind a adopt a odmítne edited a conflict bez --force. Každý nález se počítá do návratového kódu.

Rozsah

  • scripts/github-sync
  • test/cases/45_github_projection.sh

Mimo rozsah

  • Rozlišit záznam, který nikdy nevznikl, od záznamu smazaného na GitHubu, což nelze odvodit z žádné strany bez druhého úložiště toho, co bylo vytvořeno; `missing` uvádí to, co je pozorovatelné, tedy že nyní neexistuje protějšek
  • Automatické řešení konfliktu

Závislosti

Co na tom čeká

Kritéria přijetí

  • Úprava provedená člověkem je zjištěna bez ohledu na to, zda se kanonický záznam od té doby pohnul, což dokládá případ pro každou variantu
  • Záznam, jehož region byl upraven a jehož kanonický záznam se také posunul, se hlásí jako konflikt a --apply ho bez --force odmítne
  • Úkol, který si nárokuje kanonické id, jež tento repozitář nemá, se ohlásí a započítá, takže --check na něm selže
  • Každý stav je prokázán případem, který sestaví remote jako fixture, offline

Validace

  • bash test/run.sh 45_github_projection
  • scripts/github-sync --check

Požadované důkazy

  • states_distinguished
  • edit_protection_holds

Důkazy

pokrývátypcommandvýsledeku commitu
states_distinguishedtestbash test/run.sh 45_github_projectionšest stavů dokázaných proti fixture remote: insync, behind, edited, conflict, adopt, missing, plus unmanaged pro vzdálený záznam tvrdící neznámé id; nález unmanaged se nyní započítává do exit kódu3db47f7
edit_protection_holdstestbash test/run.sh 45_github_projectionupravená oblast se detekuje jak tehdy, je-li kanonický záznam nezměněn (edited), tak tehdy, posunul-li se od té doby (conflict); druhý případ byl dříve nedosažitelný, takže by --apply přepsal text člověka bez --force3db47f7

Riziko

Nízké. Každé rozlišení je odvozeno z bajtů, které obě strany už nesou.

Časová osa

zahájeno
2026-09-09T17:20:34Z
ověřeno
2026-09-09T17:20:41Z
dokončeno
2026-09-09T17:20:44Z

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/I1402.yaml. Načtěte ho zpět pomocí majordomus plan show I1402.

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