Reclamar un ítem del ledger antes de empezar

Un asiento, un ítem de la lista, de forma atómica — para que dos sesiones nunca abran el mismo ítem.

Prompt#

Reclama el ítem 12 de LEDGER-R4 antes de empezar, y suéltalo si no lo terminas.

Qué hace el Chair#

Toma el lock compartido llamado ledger:<relpath>#12 con tu sesión como holder. Sin tabla nueva y sin reescribir el archivo Markdown.

Llamadas MCP#

task_claim({
  "ledger":  ".workflow/LEDGER-R4-DOCS.md",
  "item":    12,
  "holder":  "<your session id>",
  "ttl_min": 60
})

Cuando paras sin cerrarlo:

task_release({ "ledger": ".workflow/LEDGER-R4-DOCS.md", "item": 12, "holder": "<your session id>" })

Equivalente en CLI, para un shell sin MCP:

orch task claim .workflow/LEDGER-R4-DOCS.md 12 --holder <session> --ttl-min 60
orch task release .workflow/LEDGER-R4-DOCS.md 12 --holder <session>
orch ledger board .workflow/LEDGER-R4-DOCS.md   # imprime el archivo con (claimed: <session>)

Respuesta esperada#

task_claim devuelve la fila del lock en JSON — nombre, holder, vencimiento. task_release devuelve la cadena released. La CLI imprime claimed name=ledger:.workflow/LEDGER-R4-DOCS.md#12 holder=… until=….

Trampas#

  • Cualquier asiento puede reclamar. A diferencia de task_add / task_run / dispatch_worker, reclamar no es ramificar, así que a un worker que llama task_claim no se le niega.
  • ledger, item y holder son los tres obligatorios, y item tiene que ser entero — el número de - [ ] 12., no el texto de la línea.
  • holder es tu id de sesión, el de .orch/ORCH_RUNTIME.md. Si lo inventas, el release no va a coincidir.
  • El TTL por defecto es de 15 minutos. Un ítem largo debería pasar ttl_min o volver a reclamar; un claim vencido queda libre para el siguiente asiento.
  • Si otra sesión viva lo tiene, falla claro y nombra al holder. Esa es la respuesta, no un obstáculo — toma otro ítem o escríbele al holder con msg_send.
  • El claim nunca reescribe el archivo del ledger. orch ledger board muestra los claims junto a los ítems; marcar la casilla sigue siendo tu edición.
  • Soltar con holder: "*" fuerza la liberación cuando una sesión murió con el ítem en la mano.