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.

I1401 — Identita promítnutého záznamu je to, co záznam nese, ne to, co říká jeho název

Zařídit, aby adaptér našel vzdálený záznam podle identity, kterou nese sám záznam, aby člověk mohl na GitHubu přejmenovat úkol, aniž by projekce o něj přišla nebo vytvořila druhý, a aby bylo smíření prokazatelné bez sítě.

HOTOVO vlna 0 · p0 · 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

Zařídit, aby adaptér našel vzdálený záznam podle identity, kterou nese sám záznam, aby člověk mohl na GitHubu přejmenovat úkol, aniž by projekce o něj přišla nebo vytvořila druhý, a aby bylo smíření prokazatelné bez sítě.

Proč

Párování podle titulku je jediná chyba, kterou si projekce nesmí dovolit. `remote_issue_number()` párovalo prefix `I0001 — ` ve vzdáleném titulku a každá další otázka o vzdáleném záznamu byla zodpovězena stejným prohledáním prefixu. Přejmenujte úkol na GitHubu a adaptér ho ohlásí jako chybějící; spusťte --apply a vytvoří duplikát pro kanonický záznam, který už existuje. Lékem nesmí být zapsat číslo z GitHubu do kanonického souboru, protože kontrakt samotného adaptéru je, že se zde nikdy nezapisuje hodnota z GitHubu zpět do kanonického záznamu.

Aktuální stav

Adaptér řešil pět samostatných otázek skenováním remote titulku na kanonický prefix a číslo čerstvě vytvořeného úkolu získával opětovným hledáním tohoto titulku na GitHubu. Generovaná oblast nesla hash záznamu, ze kterého vznikla, a nic, co by říkalo, o který záznam jde.

Cílový stav

Generovaný region nese `<!-- majordomus:record <id> -->` vedle svého hashe, takže identita cestuje se záznamem a splice ji přepíše. Rozlišení se děje podle této značky; titul se shoduje jednou, pro úkol promítnutý před existencí značky, a tato adopce se hlásí jako samostatný stav, ne jako aktuální projekce. Vytvořený úkol dostane číslo ze samotného vytvoření. Remote může být soubor, takže které je který záznam, je dokazatelné offline.

Rozsah

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

Mimo rozsah

  • Zápis čísla z GitHubu do kanonického záznamu
  • Jakákoli změna toho, co projekce vykresluje

Závislosti

Žádné. Tento úkol je kořenem grafu.

Co na tom čeká

Kritéria přijetí

  • Záznam se rozlišuje identitou, kterou nese, a přejmenovaný název ji ani neztratí, ani nezduplikuje
  • Úkol bez značky identity se jednou převezme podle názvu, nahlásí se jako převzetí a --apply mu dá značku
  • Název, který jen vypadá kanonicky, nikdy nezachytí záznam, který nese jinou identitu
  • Vytvořený úkol dostane své číslo z vytvoření, bez hledání podle názvu kdekoli v adaptéru
  • Sladění je prokazatelné proti fixture remote bez sítě a bez tokenu a fixture je pro --apply odmítnut

Validace

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

Požadované důkazy

  • identity_stable
  • offline_provable

Důkazy

pokrývátypcommandvýsledeku commitu
identity_stabletestbash test/run.sh 45_github_projectionzáznam pod plně přepsaným vzdáleným titulkem se vyřeší podle své značky a hlásí se jako drift těla, ne jako chybějící; úkol bez značky se jednou adoptuje podle titulku a hlásí se jako adopt; titulek podobný kanonickému nezachytí záznam nesoucí jinou identitu209a82c
offline_provabletestMJ_GH_FIXTURE_ISSUES=<tsv> MJ_GH_FIXTURE_MILESTONES=<tsv> scripts/github-sync --checksladění běží proti fixture remote bez sítě a bez tokenu; --apply fixture odmítne s exit 15209a82c

Riziko

19 úkolů promítnutých před vznikem značky se musí převzít, nikdy znovu vytvořit; cesta převzetí je akceptační kritérium, které to hlídá.

Časová osa

zahájeno
2026-09-09T17:10:06Z
ověřeno
2026-09-09T17:10:21Z
dokončeno
2026-09-09T17:10:28Z

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/I1401.yaml. Přečtěte jej zpět pomocí majordomus plan show I1401.

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