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.

I0805 — Číst relace zpět se štítkem divergence

Implementovat `session list`, `session show <id>` a `session latest`, každý s určením podle zavedeného pravidla — stejný repozitář, stejný worktree, stejná větev, pak stejná větev — a každý s vypsáním stávajícího označení odchylky záznamu od aktuálního gitu.

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

Součást M003 — Relace je trvalá obálka a znalost se kompiluje z toho, co už je kanonické.

Cíl

Implementovat `session list`, `session show <id>` a `session latest`, každý s určením podle zavedeného pravidla — stejný repozitář, stejný worktree, stejná větev, pak stejná větev — a každý s vypsáním stávajícího označení odchylky záznamu od aktuálního gitu.

Proč

Uzavřená relace z přepsané větve předkládaná jako aktuální znalost je přesně selhání, kterému slovník divergence existuje, aby zabránil. Znovupoužití tohoto slovníku místo vymýšlení druhého je celý smysl jeho existence.

Aktuální stav

mj_resolve_latest implementuje dvoustupňové pravidlo pro kontrolní body a předávky a mj_git_label vytváří exact, advanced, diverged a different_context. Žádný příkaz nečte relaci.

Cílový stav

list vypíše relace od nejnovější s jejich popisky; show vypíše jeden záznam celý; latest vypíše nejnovější relaci, která se rozliší pro tento worktree a větev, a nepřítomnost hlásí jako nepřítomnost. Záznam diverged nebo different_context je tak označen na každém z nich.

Rozsah

  • lib/session.sh
  • bin/majordomus
  • test/cases/62_session_divergence.sh

Mimo rozsah

  • Znalosti
  • Jakékoli rozlišení napříč worktrees pro celý repozitář

Závislosti

Co na tom čeká

Kritéria přijetí

  • Relace se uvádějí v chronologickém pořadí a pořadí se neodvozuje z času úpravy souboru
  • Dvě relace zapsané ve stejné sekundě se řadí deterministicky
  • Záznam, jehož zaznamenaný head není předkem HEAD, je všude, kde se vypisuje, označen jako diverged
  • Relace z jiné větve se nikdy nenabídne jako latest
  • Každý z těchto příkazů zanechává git status bajt po bajtu totožný

Validace

  • bash test/run.sh 62_session_divergence

Požadované důkazy

  • divergence_labelled

Důkazy

pokrývátypcommandvýsledeku commitu
divergence_labelledtesttest/run.sh 62_session_divergencejeden případ prošel a mutace, která odstraní ledger tiebreak, ho shodí. Případ dokazuje, že absence je zodpovězena na všech třech pohledech; že záznam se čte jako exact a pak advanced, jak historie postupuje; že přepsaná historie způsobí, že list, show i latest řeknou diverged a vypíší varování; že relace z jiné větve se nikdy nenabídne jako latest této větve, zatímco --all ji ukáže s označením different_context; že poškozený záznam je přeskočen s varováním a ne fatálně; a že každý pohled nechá pracovní strom bajtově identický. Řazení vychází ze záznamu a knihy, ne ze souborového systému: dotek starého záznamu seznam nepřeřadí a dvě události uzavření jsou v knize prohozeny, takže pořadí názvů souborů a pořadí knihy se liší4fd8083

Riziko

Znovupoužití mj_resolve_latest vyžaduje, aby záznam relace měl stejný tvar front matter jako checkpoint. Je-li záznam čisté YAML, objeví se druhý resolver, a dvě pravidla řešení jsou přesně to, co sekce o řešení v dokumentaci odmítá.

Časová osa

zahájeno
2026-09-04T18:01:49Z
ověřeno
—
dokončeno
2026-09-04T18:10:47Z

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

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