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.

I0803 — Otevřít relaci a nahlásit její stav

Implementovat lib/session.sh s `session start` a `session status`: jedna aktivní relace na worktree v .majordomus/state/session-current.yaml, její identita a fakta z gitu vypočtená, druhý start odmítnutý místo tichého nahrazení prvního a status, který hlásí aktivní relaci proti aktuálnímu gitu, nebo jasně řekne, že žádná není otevřená.

HOTOVO vlna 1 · 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 lib/session.sh s `session start` a `session status`: jedna aktivní relace na worktree v .majordomus/state/session-current.yaml, její identita a fakta z gitu vypočtená, druhý start odmítnutý místo tichého nahrazení prvního a status, který hlásí aktivní relaci proti aktuálnímu gitu, nebo jasně řekne, že žádná není otevřená.

Proč

Aktivní záznam je kotva, kterou čte každý další příkaz. Musí odmítnout, ne přepsat, protože epizoda provádění, která tiše nahradí jinou, ztrácí hranici, kterou má celý objekt vyznačovat.

Aktuální stav

Neexistuje příkaz session ani soubor stavu relace. bin/majordomus rozesílá své podpříkazy z pevného seznamu case.

Cílový stav

`majordomus session start` zapíše aktivní záznam atomicky s režimem 0600, zaznamená session_id, started_at, owner, volitelně zadanou identitu workera a vypočtené repository_id, worktree, branch, start_head a start_working_tree. Odmítne, pokud už je v tomto worktree relace otevřená, a jmenuje příkaz, který ji zavře. `session status` vypíše otevřenou relaci s jejím štítkem divergence, nebo oznámí, že žádná není. Obojí se dispatchuje z bin/majordomus a objevuje se v jeho usage.

Rozsah

  • lib/session.sh
  • bin/majordomus
  • share/allow
  • docs/CLI.md
  • test/cases/60_session_lifecycle.sh

Mimo rozsah

  • Uzavření relace
  • Jakékoli čtení účetní knihy
  • Znalosti

Závislosti

Co na tom čeká

Kritéria přijetí

  • Příkaz má sekci v docs/CLI.md, protože generátor webu odmítne odeslaný příkaz bez ní, a dokumentuje jen to, co je implementováno
  • Relace začne, aktivní záznam existuje a jeho identifikační pole odpovídají gitu
  • Druhý start je odmítnut nenulovým exit kódem a jmenuje uzavírací příkaz
  • Relace zahájená v jednom worktree se v jiném nezobrazuje jako aktivní
  • status hlásí absenci jako absenci, ne jako chybu
  • Neznámé klíče aktivního záznamu jsou odmítnuty allowlistem jako u každého jiného YAML souboru Majordomus

Validace

  • bash test/run.sh 60_session_lifecycle
  • shellcheck -x -s bash lib/session.sh

Požadované důkazy

  • session_opens

Důkazy

pokrývátypcommandvýsledeku commitu
session_openstesttest/run.sh 60_session_lifecycle1 prošel. Případ dokazuje, že identita se počítá z gitu, ne píše; že nepřítomnost se odpovídá jako nepřítomnost s exit 0; že záznam má režim 0600; že nedodaný pracovník zůstává nezaznamenán, ne vymyšlen; že druhé otevření se odmítne s exit 15 a jmenuje zavírací příkaz; že záznam, jehož worktree je jiný checkout, se hlásí a tento neblokuje; že poškozený záznam končí exit 10, ne čtením jako žádná relace; a že status nic nezapisuje. Kontrola shellcheck repozitáře prochází na úrovni varování přes celý strom9c13909

Riziko

Jedna aktivní relace na worktree je stejné pravidlo, které už má current.yaml, a current.yaml je sledovaný, takže cestuje s větví a v checkoutu, který ho nikdy nespustil, se jeví jako aktivní. Záznam relace musí zaznamenat svůj worktree a číst se stejným pravidlem cizího záznamu.

Časová osa

zahájeno
—
ověřeno
—
dokončeno
2026-09-04T16:29:23Z

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

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