Repository navigation
Lot 9: one set of rules for every way a session ends - #19
Merged
Merged
Conversation
A second machine's log showed three gaps. Windows ending the session was logged at debug and the Stopped after it is often lost, since the session may end as soon as WM_ENDSESSION returns, so a shutdown and a vanished watcher read alike. A stop command refused as a game closed with the shutdown was never run again. And two watchers had vanished mid-game, there and here, with nothing at the next start to say so. Now the session end is written at info before answering Windows, and tries no command, since none started then lives; the session is left to the next start. At any other end the stop commands run and a failure leaves the session for one retry. The marker's state says whether a watcher still held it, so a start can warn that the last one ended without stopping. StopSignal records one reason instead of a flag each. Seen in the field on 2026-10-17: a shutdown mid-game whose stop command failed before the window was asked and ran at the next start, and two watchers ended from Task Manager, each named at warn. Both real session ends carried ENDSESSION_CLOSEAPP, so it is no longer read as an installer's request. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
One of Lot 17's three things left to see: the single gamemode-executor.log is gone, eight dated files kept. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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.
A second machine's log, and a watcher that vanished here mid-game on 2026-10-11, showed three gaps in how a session ends. This gathers every way a session can end into one set of rules, written as one table in
docs/design/09-robustness.md.stopleftif one failedleftleftopenAt start, a marker is resumed if a game still runs, and otherwise its stop commands run once. A marker still
openis reported atwarn: the last watcher ended without stopping.What changes for the user
info, before the watcher answers. TheStoppedthat follows can be lost, because Microsoft documents that the session may end as soon as every application has returned fromWM_ENDSESSION.warn.Code
StopReason::SessionEnd.StopSignalrecords one reason instead of one flag per reason.Outcome::confirmedbecomesany_failed.stateline (openorleft). A marker with no state line, as written by 0.3.0, reads asleft.statusshows the marker's state.Verified
build.ps1 testpasses. Four scenarios were added, and the ones the old rules had shaped were rewritten.warn.ENDSESSION_CLOSEAPP. A first version read that flag as an installer's request; that branch was removed.A second commit records one of Lot 17's pending checks: the old
gamemode-executor.logwas pruned.🤖 Generated with Claude Code