Repository navigation
Explain stale drafts after Undo with an executable context walkthrough - #9
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The README now demonstrates a concrete reason to check context: a draft opens at value 100/revision 42, another edit changes the value, and Undo restores 100 at revision 44. The value matches again, but the old draft remains stale; Reset changes only its preview and finish rejects the old context.
The dependency-free Rust example prints these four states and asserts the real library results. A small development-only Python renderer records the output and source hashes, then generates the front-page SVG. CI runs the example and checks the saved output/diagram on Rust 1.88 and stable. The source crate includes the renderer.
The walkthrough and README explain host-owned revisions, serialized check/dispatch, fallible-command recovery and when a local helper is enough. The two projects remain independently usable. Historical package sizes and consumer regression measurements remain explicitly dated; no speed, code-size, extra upstream coverage or adoption claim is added. Public API, runtime implementation and published versions are unchanged.
Validation on Rust 1.88: 16 lifecycle tests, 8 recovery example tests, one compile-fail doctest; both executable examples; fmt and strict all-target Clippy; offline source packaging and package build verification. The generated diagram was inspected at README width.