Repository navigation
Describe deterministic stack replay - #278
nishu-builder wants to merge 1 commit into
Conversation
22ef03a to
e704a18
Compare
nishu-builder
left a comment
There was a problem hiding this comment.
Review for simplicity and parsimony, covering the design and how #279–#282 implement it.
The main point (inline at L139-152): since every replay step is a pure function of object ids, the replay can re-run the whole plan on each call instead of pausing and resuming. With a fixed committer, output commits are the same on every run, and the merges are cached jobs. That removes action=continue, the done/here records in the plan, the rules for what stays fixed while paused, the stored original-snapshot tree id, and the history walk in #282's rebase.rs::checkpoint. That is most of the 1390-line rebase_plan.rs and most of rebase_tests.rs. A conflict is resolved by editing the plan to reference the fixed draft.
Other reductions, each inline:
- Plan commands:
dropis a no-op,squashis a range pick plus a message, andamendismessage. Four commands cover it: onto, pick, message, branch. branch=takes bare names and the tool assigns numbers.git-add-layeris a one-layer replay. Consider one writer, and dropping the special-workname.- Writers get the
stacksubtree asin, not the whole conversation. This removes the out-of-scope diff check and allows cache hits. - #279 adds a second merge-tree implementation (a server route) beside
std/merge, and agit-commit-treesubcommand that duplicatescaos put-commit. design/chat.mdanddesign/agent-github.mddescribe a different stack model (numbering from 01, restack by merge, no special names) and need updating in this PR.
Generated by Claude Code
e704a18 to
f14abce
Compare
|
Closing as superseded: #293 put the stack design in Generated by Claude Code |
Represent a feature as numbered source gitlinks and
.basefiles recording where each layer started. A replay plan selects changes, messages, and output branch boundaries.Each run starts from the beginning with fixed commit metadata. A conflict leaves a draft to edit; the next plan references that resolution. The same tool prepares new layers and restacks existing ones. Update the chat and GitHub guides to describe this workflow.