First published on openspec-ui.dev.
A change worked in its own worktree — since ADR 0043 the usual change —
could have its own harness set nowhere but in the file. The Changes tree
drew such a change as one worked "elsewhere" and gave it a shortened menu,
and the Pipeline's card offered only Start, the run's controls and Logs.
Every control added to the tree and not to the card, or the other way
round, left one host or one kind of change poorer.
The owner decided the same day: when a change is made, everything needed
is done, so the change can be worked at once as one's own.
The rules, now with when
The agent workflow rules say when: commit the planning artifacts on the
change's branch and push it with an upstream as soon as they are written;
commit and push after every task ticked; leave nothing uncommitted or
unpushed at the end of a turn; nothing of a change on main; a refused
push is said, not worked around.
Create Change, in both hosts, commits the new change on its branch and
pushes it at once. A refused push leaves the change made and says why
(OSW-GIT-203).
The git stage commits what the stages left before it pushes
(OSW-GIT-103 where that commit fails).
The survey and the card
The survey says where a change's own branch is not on the server: never
pushed, or at another commit. Read from the refs it lists anyway, so no
git runs in the directory.
A card of a change's own worktree says so ("not on the server"), and a
new action, Commit Change, commits everything the worktree holds on
the change's branch and pushes it. On the card and in Show Actions..., in
both hosts; refused in the main checkout and on the default branch.
A card of a change's own worktree offers its actions in the arrangement
by step as on the board, and Run Change...: the owner found on
2026-10-10 that such a change could be acted on but never run — a card's
Start was refused for a change this checkout does not have. It runs in
the change's worktree, in both hosts.
Messages in the new GIT group
Messages in the register's new GIT group (OSW-GIT-001..203) name
every failure, refusal and success in the commit and push path. ADR 0043
is amended to reflect the new rules.
Try it
The code is at
github.com/VeryComplexAndLongName/OpenSpec-UI,
where the repository and packages keep the name OpenSpec-UI.
openspec-ui-cli commit change --cwd . 
