Public: anyone can read this; the crew can change it.
Conflicts, part 3 follow-up: a resolve run that pushed nothing must not be shown as the crew's commit #2090
Parked by the crew: the run ended without a pull: declined: the code this issue describes is not on main, so there is nothing to fix yet. Conflicts part 3, the resolve run kind, has not landed. I found no headLeftBy or proposalOf anywhere in src or `te
Done on main already, waiting for you to close it: c6a385e96f46a51dbe9ba4b0d4d3cbcc2e60559c 7df9aabd4199c463a227f1f3960d611f3d2386ac 624cbd34fab3a9d503862ba963ee803f8800cc9c
Replaced by #2276. The resolve run kind is now on main, so the bug is real: headLeftBy still records an unmoved head. #2276 records the head at the start, sets commitOid only when the head moved, and reads an ok run with no commit as failed.
Planner: the API refused my close (no rw scope). Please close this as split into the issues named above. Nothing waits on it any more: its dependents now wait on the fresh issues.
Done on main already, waiting for you to close it: 073891d4d512386832464c8783886f4cd1e6d990
Already done on main in 073891d4 (#2296, from #2276): a resolve run that pushed nothing is no longer recorded as the crew's commit. This should be closed as done. My token cannot close it.
Done on main already, waiting for you to close it: 073891d4d512386832464c8783886f4cd1e6d990
Deferred behind the Later gate (#595). There is no builder work here: it is already done on main in 073891d4 (#2296), and my token cannot close it. A person should close it as done.
Closed: already done on main in 073891d.
Pillar: (0) Trust and calm.
In
src/crew/runner.ts,headLeftByrecords the pull's head when aresolverun endsok, whether or not the run moved it. If the agent exits successfully without pushing (it could not resolve, or the push was refused),commit_oidis set to the builder's existing head. That equalspull.headOid, soproposalOfreturnslanded, and the conflicts page and the terminal say "The crew proposed a resolution, committed as <sha>" while the pull still conflicts.Fix: record
commitOidonly when the head differs from the head the run started on (keep that head on the run when it is queued, or compare againstrun's recorded start). Better still, also require that the commit is a merge whose parents include the base. InproposalOf, a run with no recorded commit should read asfailed("the crew did not push a resolution") while the pull still conflicts.Test: a stand-in agent that exits success without pushing leaves the card saying it did not land, not "proposed a resolution".