fix(update): keep pipe-drain proof off host console - #100763
Open
andrexibiza wants to merge 3 commits into
Open
andrexibiza wants to merge 3 commits into
andrexibiza wants to merge 3 commits into
Conversation
Contributor
|
This was referenced Sep 2, 2026
Open
andrexibiza
added a commit
to andrexibiza/hermes-agent
that referenced
this pull request
Sep 5, 2026
A delayed browser could miss the 900ms terminal event and spin forever after the updater exited. Retain terminal delivery until the page acknowledges it, bound unavailable-client teardown and failed requests, and preserve a truthful final display. Fixes NousResearch#103747. Builds on OutThisLife and Teknium detached handoff work in NousResearch#83634 and the NousResearch#75895 quiet-window design. Continues Axl Ibiza Windows update investigation (NousResearch#60233, NousResearch#94107, NousResearch#100763), including source/review contributions carried by merged NousResearch#93353 and NousResearch#85170. Existing NousResearch#102373, NousResearch#103140, NousResearch#95719, NousResearch#97299 and NousResearch#103632 retain their separate scopes.
teknium1
pushed a commit
that referenced
this pull request
Sep 6, 2026
A delayed browser could miss the 900ms terminal event and spin forever after the updater exited. Retain terminal delivery until the page acknowledges it, bound unavailable-client teardown and failed requests, and preserve a truthful final display. Fixes #103747. Builds on OutThisLife and Teknium detached handoff work in #83634 and the #75895 quiet-window design. Continues Axl Ibiza Windows update investigation (#60233, #94107, #100763), including source/review contributions carried by merged #93353 and #85170. Existing #102373, #103140, #95719, #97299 and #103632 retain their separate scopes.
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.
What changed and why
-SelfTestPipeDrainintentionally captures an 8 MiB flood to prove the Windows handoff drains child pipes without backpressure.Invoke-HermesStepthen replayed that full capture throughWrite-Host; GitHub Actions throttled its 128 KiB lines, pushed the fixture over its wall-clock budget, and kept the job draining long after the fixture exited.This change separates durable logging from host-console replay. Production callers keep the existing default. Only the fixture's flood arm suppresses raw console replay; its bytes remain in
desktop-update-handoff.logandInvoke-HermesStep(...).Output, while concise progress and the final verdict remain visible.Why this matters to users
This does not change the updater users run. It makes the real Windows watchdog proof reliable on the same hosted Windows environment that gates Hermes changes, so future pipe-drain regressions fail in CI instead of forcing maintainers to rely on suites that skip the executable fixture.
How to test
scripts/run_tests.sh tests/test_desktop_update_windows_pipe_drain.py tests/test_desktop_update_windows_python_handoff.py tests/test_desktop_update_windows_progress.py tests/test_desktop_update_windows_timestamp.py(12 tests total; verified serially with disjoint pytest roots on native Windows)git diff --check, attribution auditPlatforms tested
TDD receipt
pipeflood|is absent from stdout, full flood bytes remain in the durable handoff log, and all four fixture arms pass.Related work and credit
Invoke-HermesStep; fix(feishu): fix DM approval card button unresponsive in direct messages #95156 carries a broad stale version of the same function. Whichever lands later must preserve the default-true replay parameter and the singlepipefloodopt-out.Fixes #95971
Prior Work / Attribution
Prior credit - the humans whose work this builds on, before anyone else:
-SelfTestPipeDrainfixture (fix(update): bound the Windows update hand-off's step pipe drain #90564).Related work searched (multiple methods, all states, before finalizing this PR):
SelfTestPipeDrain,pipeflood,Invoke-HermesStep,windows.ps1, host-console replay): no open PR implements this replay split; the current same-file collision set is listed above.scripts/desktop-update/windows.ps1and the Windows handoff tests confirmedWrite-HandoffLog,Invoke-HermesStep, and thepipefloodarm are the complete relevant path.SelfTestPipeDrain/ pipe-drain evidence found the original Windows: Desktop update hand-off hangs forever when gateway stays resident (windows.ps1 waits on ReadToEndAsync that never sees EOF) #90455/fix(update): bound the Windows update hand-off's step pipe drain #90564/fix(update): Windows Desktop updates finish instead of parking on "Updating Hermes" #90937 lineage and the retained Actions evidence attached to fix(update): Windows desktop update stall watchdog + fleet-check false failure #95897/SelfTestPipeDrain fixture hangs on hosted windows-latest runners (passes on native Windows) #95971.Unlinked related work (stars not bound to this PR by keywords):
Builds on: @jackulau (#90564), @OutThisLife (#90937), @fangliquanflq (#95625), and @teknium1 (#95897/#95971).
Merge-order / dependency: standalone; later same-file work must preserve this default-true parameter and fixture-only opt-out.
Duplicates: none; the live FILE-LIST and behavior searches found no existing PR that separates durable capture from host-console replay.