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ě
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á
- I1402HOTOVO Nález říká, který ze šesti stavů zjistil, a stav, který mohl skrýt úpravu provedenou člověkem, mezi nimi už není
- I1403HOTOVO Doplnit projekci zpětně jednou, záměrně, a zaznamenat, co vytvořila
- I1405HOTOVO Pull request jmenuje úkol, který realizuje, a hrana se odvozuje, nepamatuje si
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á | typ | command | výsledek | u commitu |
|---|---|---|---|---|
| identity_stable | test | bash test/run.sh 45_github_projection | zá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 identitu | 209a82c |
| offline_provable | test | MJ_GH_FIXTURE_ISSUES=<tsv> MJ_GH_FIXTURE_MILESTONES=<tsv> scripts/github-sync --check | sladění běží proti fixture remote bez sítě a bez tokenu; --apply fixture odmítne s exit 15 | 209a82c |
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.