Open a ticket. Print the island.
An island is the cluster of linked claims this task activates. The ticket stays open until vissue closes it.
1. Point at scratch stores
A first sitting should not touch a live tracker. Make an empty tracker directory in a fresh scratch directory, export the roots, start the pack writer, and ask doctor. A tracker is a directory holding Software/ or a vissue.toml. mktemp -d gives a directory only you own; a fixed /tmp path can be another user's or left over from an earlier run, and git init then fails on its config lock. The tracker commits every change, so git needs an identity (git config --global user.email), or the commit is refused with Author identity unknown.
$ seat=$(mktemp -d) && mkdir -p "$seat/tracker/Software" "$seat/deeds" $ git -C "$seat/tracker" init -q && cd "$seat" $ export VISSUE_ROOT="$seat/tracker" DEEDAR_URL="file://$seat/deeds" $ export CLAIMDAG_DIR="$seat/claims" PACKSET_URL=http://127.0.0.1:18761 $ packsetd --port 18761 --home "$seat/pack" & $ ljos doctor
2. Make a ticket and sit it
sitting prints its sections in order and stops at the first store that does not answer: doctor, cards, due, the island the title activates, open blockers, the playbook it binds, the panel when the issue is a decision, recall, timeline, reclaim, then the claim. When .ljos/sync.toml names a scope, sync is printed after doctor and the other machines' sealed logs are taken before the island is walked. A repository with no such file says nothing about sync. On a decision issue the panel section writes one brief per persona the title names; each brief starts a subagent that casts one ballot as that persona, and finish --close refuses a decision with fewer than two ballots. When the tracker is a git checkout, the claim is committed and pushed, so another host sees who holds the ticket. After the sitting, read each due row and run ljos graded ID (or --lapsed). The clock does not move until you grade.
--assignee is for a named worker. Left off, or given as a pronoun (you, seat, agent), the holder is this conversation's: the seat tagged with its process, the same in the runner's tools and its shells (ljos seat prints it). Occupancy is holder:issue, so two conversations do not share one slot and a second sitting does not release the first.
$ id=$(vissue create -p demo "Ship the fuse change?" -q) $ ljos sitting $id == doctor ... == timeline ... == claim gen=2
3. Cite what the work produced
A deed is frozen bytes. The ticket cites the accession. Citing a deed names it; the bytes stay in deedar.
$ echo 'fn main() {}' > patch.rs
$ deedar create file --name "the fuse patch" --path patch.rs --agent you
$ ljos deed $id --add deed-file-the-fuse-patch
4. Finish
A lesson an agent writes is a proposal until it is accepted: finish prints its id, and ljos accept ID makes it live. The island fires when its seeds agree. The session node completes. An outcome, when named, rewrites trust. The ticket keeps its state until ljos finish $id --close or the tracker closes it. When the tracker is a git checkout, finish commits the ticket's file and pushes it, and the last line says which; this scratch tracker has no remote, so the push is refused and the commit stays local. A closure that stays in one working tree does not exist for any other host.
$ ljos finish $id --lesson "The fuse patch shipped as one file. Nothing else moved." proposed 1735... as agent-derived; `ljos accept 1735...` writes it ... completed the session node for demo-... as done the ticket demo-... keeps its state; `ljos finish demo-... --close` or `vissue update demo-... -s DONE` closes it when the work is accepted tracker git: committed chore(issues): demo-... finished; push refused: fatal: No configured push destination. $ ljos accept 1735...
5. Clean up
The scratch seat is one directory and the pack writer started in step 1. Stop the writer and remove the directory, and the next run starts clean on the same port.
$ kill %1 && rm -rf "$seat"
Agreement is ljos consensus over ljos-consensus on crates.io. The seat crate walks the same loop: ljos getting started. Field note: completing is not closing.