fix(windows): refresh stale Hermes persona fallback - #3346
Open
tang-vu wants to merge 1 commit into
Open
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.
Summary
data/persona/SOUL.mdwhen Python rendering is unavailableWhy this matters
Windows install and refresh paths regenerate Hermes' install-owned persona after configuration/template changes. When every Python renderer candidate is unavailable, both paths only removed directories and silently retained an old regular file. The invariant is that a refresh always produces content from the current template, whether dynamic rendering succeeds or the fallback is used.
Closes #3334.
Closes #3343.
Overlap check
Searched open and closed PRs for
Windows SOUL.md,Repair-HermesSoulMd,Invoke-HermesSoulRefresh, and both issue numbers. No PR covers either production entry point. The two reports are intentionally combined because they implement the same refresh contract in the phase and maintenance CLI copies.Test plan
powershell.exe -NoProfile -ExecutionPolicy Bypass -File ods/tests/test-windows-hermes-soul-refresh.ps1(both entry points passed)git diff --checkTradeoffs and rollback
SOUL.mdis installer-generated state, not a user-owned source template; fallback refresh now overwrites it just as successful dynamic rendering already does. No migration is needed. Reverting restores stale-file preservation when Python is unavailable.Generated with Codex
Follow-up overlap audit (2026-08-31)
#3489 opened later and fixes the same
Test-Path -PathType Containermistake, but only ininstallers/windows/ods.ps1; it leaves the duplicated installer-phase implementation inphases/06-directories.ps1stale and provides no executable regression test.#3346 remains the stronger canonical fix because it keeps both Windows production entry points behaviorally identical and runs each real function against a pre-existing stale
SOUL.mdwith Python rendering unavailable. #3489's narrower-PathType Leafcheck offers no independent advantage over #3346's removal of whatever conflicting node exists at the installer-owned output path, so no code was ported.