Repository navigation
Invalidate stale snapshot guards after UART batches and port reads - #77
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.
Successful UART input and bus port reads previously changed device state while leaving old observation and complete-snapshot revision guards valid. Advance the epoch once after each successful operation and return it from serial.write; invalid input remains atomic and running calls remain supported. Port reads conservatively invalidate guards without guessing device purity.
Validation: 59 focused production-handler/machine tests and four historical UART probes pass under CPython and PyPy. Actual JSON-lines requests run through the production owner loop while the CPU executes, preserve its active execution operation, and enqueue/consume UART data. Omitted-enqueue and omitted-read epoch negative controls each accept a stale token and fail the guard assertion; exact restored source passes. Complete-machine/control comparisons cover rejected inputs, full UART queues, loopback and stale snapshot export/import.
The initial independent review found no runtime defect; its central revision-summary and actual-running test gaps were fixed in the follow-up commit. Targeted final review and exact-head CI are pending.