Dashboard › opencode-lore › Distillation
6c198b76-271a-46e8-a40a-d03e7a8e8614["lore_tm_v1_AQeMr-DxiGhpM2BM79RbP43ve79GYiyCE-5qKOeaEB0","lore_tm_v1_j21UpSic0aDKK510Ovpnnpia72Wv8hfv3VnMWWaWSl0"]
Date: Sep 16, 2026
jj) operations “never fails on conflict”; conflicts are recorded in the resulting commit and must be identified with jj st and resolved later..jj/ exists, use jj rather than git for mutations; never use interactive flags; always pass -m "msg" for descriptions/commits; verify mutations with jj st and jj log; prefer stable change IDs over commit IDs; never rebase or describe immutable commits; use jj undo, jj op log, or jj op restore <op-id> for recovery.@; edits automatically amend @; @- is its parent and @-- its grandparent; bookmarks do not automatically advance; operation history replaces reflog.rebase, new, or squash, run jj st; inspect and manually resolve conflict markers, including %%%%%%% diff from:, +++++++, and >>>>>>>; do not use interactive jj resolve; jj st shows when conflicts clear.jj commit -m "feat: ..." and leaves committed content in @- with a new empty @; Style B, recommended for refinement, uses jj describe -m "feat: ..." before editing and leaves @ as-is without running jj new at the end.jj edit <change-id>, apply the fix, jj new, and jj git push; or preserve review history additively with jj new <bookmark>, apply the fix, jj commit -m "address review", jj bookmark set <bookmark> -r @-, and jj git push -b <bookmark>.x..y means set difference, while x::y means a DAG path; they are not interchangeable.