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.

majordomus checkpoint

Zaznamená stručný postup uvnitř aktivní úlohy, aby další worker nezačínal znovu.

Zaznamená stručný postup uvnitř aktivní úlohy, aby další worker nezačínal znovu.

  • mění stav
  • continuity
  • vyžadována aktivní úloha

Poznámka o postupu, ne zpráva. Tělo nad limitem řádků politiky je odmítnuto s radou napsat místo toho předávku a pole identity v těle jsou zamítnuta, protože se počítají z gitu. --derive sestaví tělo z gitu a účetní knihy místo čtení stdin, takže jej hook může zaznamenat, aniž by ho pracovník psal.

Syntaxe

majordomus checkpoint [--derive] < body.md

Životní cyklus

  1. Nastavit
  2. Začít
  3. Pracovat
  4. Ověřit
  5. Uzavřít
  6. Prozkoumat

Další příkazy v této fázi:context, decision, question, prompt, evidence, skills, capture.

Čte

  • .ai/repo/policy.yaml
  • .ai/local/state/current.yaml

Zapisuje

  • .ai/local/state/checkpoints/
  • .ai/local/state/current.yaml
  • .ai/local/state/ledger.jsonl

Návratové kódy

Jen kódy, které tento příkaz může vrátit. Úplný kontrakt je na indexu příkazů.

  • 0 ok
  • 2 použití
  • 10 kontrakt nesplněn
  • 12 chybějící artefakt
  • 13 interní chyba
  • 15 odmítnuto

Poznámka o postupu, ne zpráva

Checkpoint je to, co by další pracovník potřeboval, kdybyste se teď zastavili. Délka je záměrně omezena: za limitem píšete předávku, a řekne vám to.

Průběh záznamu

aktivní úloha
ano

Pro tento repozitář platí

# ... and an active task scoped to lib, with work done inside that scope.
. "$FIXTURE_SETUP/installed.sh"
"$MJ" start "narrow the parser" --scope lib >/dev/null
echo work >> lib/a

…a toto tělo na standardním vstupu

the parser now refuses tabs; the message names the column

Spustit

$ majordomus checkpoint < body.md

Výstup obsahuje

  • .ai/local/state/checkpoints/

ukončení 0

Soubor se zapisuje atomicky s režimem 0600 a nikdy se nestaguje. Jeho název nese časové razítko, větev a head, takže záznam lze zařadit bez otevření.

Bez aktivní úlohy

aktivní úloha
ne

Pro tento repozitář platí

# A repository with Majordomus installed and projections generated, and one commit of work.
"$MJ" init >/dev/null
"$MJ" update >/dev/null
mkdir -p lib docs
echo a > lib/a
echo d > docs/d
git add . && git commit -qm base

…a toto tělo na standardním vstupu

the parser now refuses tabs; the message names the column

Spustit

$ majordomus checkpoint < body.md

Výstup obsahuje

  • .ai/local/state/checkpoints/

ukončení 0

Checkpoint patří epizodě, ne úloze. Záznam se zapíše a jeho `task_id` je `none`, což je fakt, který pozdější čtenář dokáže zařadit; událost ledgeru, kterou vyšle, nenese `task_id` vůbec, protože každý čtenář té události sbírá odlišné hodnoty tohoto pole jako identifikátory úloh. Tento scénář do ADR 0052 očekával exit 12: odmítnutí zde znamenalo, že dokončení úlohy umlčelo záznamy o postupu pro každou další epizodu, což se přesně tomuto repozitáři dělo šest dní od 2026-09-05.

Reference

Zaznamenat stručný postup uvnitř aktivní úlohy. Pouze pro připisování; tělo přichází na stdin.

Checkpoint není malá předávka. Předávka je záměrný balíček pro pokračování, který se píše, když worker končí; checkpoint je to, co platilo před chvílí, dost krátké na to, aby ho kontext dalšího workera mohl citovat celý. checkpoint.max_body_lines v politice ten rozdíl vynucuje — tělo nad limitem se odmítne s doporučením napsat místo toho předávku, a neořízne se.

Zapisuje: state/checkpoints/<ts>--<branch>--<head>--<rand>.md, režim 0600, vytvořeno atomicky s link, nikdy nestageováno. Front matter se počítá přesně jako u předávky; tělo obsahující identitní pole je odmítnuto. Také aktualizuje checkpoint_at v záznamu úlohy a připojí task.checkpoint do knihy.

Prázdné tělo je povoleno a nezapíše žádný soubor: aktualizuje jen checkpoint_at, což check --checkpoint dělalo vždy. Obojí je tatáž operace; checkpoint je ta, která umí říct i to, co platilo.

  • --derive skládá tělo z gitu a ledgeru, místo aby četl stdin: commit, pracovní strom, kolik souborů se od začátku úlohy změnilo, commity od té doby a počet blokátorů. Zůstává uvnitř stejného limitu a je to, co spouští událost kompakce providera — kompakce zahodí konverzaci, zatímco práce pokračuje, a okamžik, kdy je oznámena, je jediný okamžik, kdy lze cokoli zapsat o kontextu, který přestane být dosažitelný.
  • --show vypíše nejnovější checkpoint pro tento worktree a větev — pro aktivní úlohu, je-li nějaká, jinak nejnovější bez ohledu na to, kterou úlohu jmenuje.
  • --list vypíše checkpointy tohoto worktree, nejnovější první, s gitovým štítkem každého.

Checkpoint patří epizodě, ne úloze. Zapisuje se, ať je úloha otevřená, nebo ne, a ať poslední dosáhla jakéhokoli výsledku; task_id záznamu je úloha, když nějaká je, a jinak none, a událost knihy pole zcela vynechá, místo aby zapsala doslovné none, které by každý čtenář té události sebral jako úlohu toho jména. Jen checkpoint_at samotné úlohy se při skončení úlohy nechává být, protože toto pole patří úloze.

Tohle se odmítalo s 12 (žádná aktivní úloha) a 15 (úloha už není aktivní) až do ADR 0052. Ta dvě odmítnutí jsou výpadek z 2026-09-05: úloha označená handed_over a nikdy nenahrazená umlčela záznamy o pokroku tohoto repozitáře na šest dní, zatímco epizody se dál otevíraly a zavíraly a každá kontrola zdraví procházela.

Kód 10, když tělo nese pole identity nebo překročí strop.

$ majordomus checkpoint <<'EOF'
OAuth state mismatch reproduced with the fixture in test/fixtures/callback.json.
Cause is in callback normalisation, not in the comparison.
Next: regression test before touching the implementation.
EOF
.ai/local/state/checkpoints/20260903T194500Z--main--3f2a9c1--8c1d0e4a2b6f9317.md

Důkazy

Každý případ níže běží v CI na Linuxu i macOS. Web se odmítne sestavit, pokud veřejný příkaz nemá behaviorální případ, negativní případ nebo ukázku.

Záruky, které tento příkaz nese

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