work-in-slice
Own only the assigned workspace, bookmark, and descendant change IDs. Work there, never in another worker's directory.
-
Confirm
@is an empty change on the assigned base:shjj workspace root jj log -r '@ | @-' --no-graph -T 'change_id.short() ++ " " ++ if(empty, "(empty) ") ++ description.first_line() ++ "\n"'If it is not, stop and tell the orchestrator.
-
Make one logical, independently passing revision at a time:
shjj status jj describe -m 'Add retry policy to HttpClient' jj newUse an imperative, capitalised subject without a period; a body explains why. Create the bookmark after the first revision with
jj bookmark create <slice> -r @-, then move it after every revision withjj bookmark move <slice> --to @-. -
Fold fixes rather than stacking follow-ups:
jj squash --into <change-id>; usejj absorbfor line-based ancestor fixes,jj splitto separate work,jj describe -rto reword, andjj rebase -r ... -B ...to reorder. Refer to revisions by change ID, not commit ID. -
When the base moves:
jj git fetch && jj rebase -b <slice> -o <base>; resolve recorded conflicts in their revision (jj new, edit,jj squash), then return to the tip withjj new <slice>. A stale-workspace error means stop and usesync-workspace. -
Before hand-off, leave
@empty, runjj status, ensure all slice revisions are described and conflict-free, and report the workspace, bookmark, and ordered revision list. Do not push or forget the workspace.
Never use --ignore-immutable. Snapshot with jj status before pausing;
rewriting an active descendant's ancestor risks a divergent recovery.
If navi --version succeeds, jj-navi can handle
workspace navigation; navi switch and navi doctor are safe for a worker,
while navi list and navi merge belong to the orchestrator. Offer the
install when it is missing rather than running it. None of the steps above
change.


