mirror of
https://github.com/garrytan/gstack.git
synced 2026-11-10 02:30:39 +01:00
* Rebuild the decision snapshot from the merged log when two machines' syncs conflict (#4174) Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> * Keep redacted decisions out of a rebuilt decision snapshot The jsonl-append merge driver takes the union of base, ours and theirs, so a log that lost lines on one side (--compact expunging a redacted decision) would get them back. The snapshot rebuild now runs only when every base line of the log is still on both sides; otherwise the merge aborts as before. A conflicted snapshot when local edits are put back after the merge is now rebuilt from the working-tree log instead of left at the merged version. Review-Finding: p1/red-team#1 reader=red-team Review-Finding: p1/red-team#2 reader=red-team Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> * Put the stash recovery path back to how main handles it Rebuilding a conflicted decision snapshot after stash pop made a decision that another machine redacted and compacted away consistent and publishable, because stash pop merges the log as a union. Without the rebuild the mismatched log and snapshot stay held, as on main. The redaction guard on the merge-retry rebuild stays. A new test shows the brought-back decision stays held and never reaches the remote. Review-Finding: p2/outside-voice#1 reader=outside-voice Review-Finding: p2/adversarial-native#1 reader=adversarial-native Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> --------- Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>