Repository navigation
fix(update): after the commit point nothing fails hermes update (C3) #132386
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
62 commits
Select commit
Hold shift + click to select a range
3d32013
fix(update): after the commit point nothing fails hermes update (C3)
teknium1 fa5dbd9
refactor(update): move post-restart fleet verification into update_cm…
teknium1 bf4758a
fix(update): a dependency sync that fails after the tree moved is a f…
teknium1 b2134ce
fix(update): keep the unsaved manual-serve restart warning while an u…
teknium1 01766d9
fix(update): read update.log and receipts from the root home
teknium1 ecc0d8d
test(e2e): hostile post cells for a failed dependency sync, Ctrl-C af…
teknium1 adb18b5
docs(update): dependency follow-up, Ctrl-C after commit, root-home re…
teknium1 d4f8d94
revert(pm): leave pm receipts where pm writes them
teknium1 745ab88
test: follow the fleet-verify split and the root-home hand-off in pin…
teknium1 ba2fbcc
fix(update): a conflicted autostash is owed to the user, never a plai…
teknium1 1e4d5f8
test(e2e): pm sync receipts stay in the active home; only update rece…
teknium1 4502332
fix(update): keep runtime safety, config debt and carried serves sepa…
teknium1 3dc67d8
test(update): real-process invariants for runtime safety, config debt…
teknium1 09b06e7
test(update): a failed config-format write is owed, not swallowed; ch…
teknium1 3a94ebd
test(update): round-5 invariants read config through hermes_yaml (PyY…
teknium1 4d66135
fix(update): the receipt's build stage fails only for a build follow-…
teknium1 ef2c538
fix(update): preserve receipt identity and durable terminal facts
teknium1 dbf710d
fix(update): no post-commit receipt-store, restart-IPC or profile-syn…
teknium1 4e2a0e7
docs(update): receipt-store and gateway-marker rules after the commit…
teknium1 6ce051e
fix(update): a refused Windows resume after the commit point never fa…
teknium1 1e08ef1
docs(update): profile sync is owed only when the step escapes; one po…
teknium1 3d4e3bf
fix(update): a stopped unmapped gateway keeps its restart owed across…
teknium1 967add6
fix(update): managed SSH observer reads a profile update's receipt fr…
teknium1 5f4ae82
fix(update): a dashboard accepts only its own action's completion fro…
teknium1 cc009e9
docs(update): maintenance docstring says profile sync is best-effort …
teknium1 cb620d8
fix(update): an unbuilt Desktop app is reported by one whole line the…
teknium1 7e2f440
fix(update): run the isolated completion child in UTF-8 mode (hardeni…
teknium1 15eb324
docs(update): post-commit contract in the compacted update-pipeline docs
teknium1 bc4f5cc
chore(update): post-commit catch-all boundaries carry the code-health…
teknium1 8cf0455
test(dashboard): update-status root-log cells move to their own file
teknium1 281c68a
fix(update): an unwritable gateway status never fails a settled commit
teknium1 2b59418
fix(update): a Desktop build that never ran is named for the hand-off
teknium1 e5c8e59
fix(update): a lost completion after the commit point is owed, not fa…
teknium1 35042af
fix(update): a raising fleet restart in the takeover child is owed, n…
teknium1 964e3dc
fix(update): source_build migration waivers say what actually happens
teknium1 506ea4b
fix(update): docs name the parked-stash exit 1 and the owed completion
teknium1 87fbf03
fix(update): a lost completion is owed without adopting a retired cha…
teknium1 f179b2f
fix(update): new post-commit tests use explicit encodings
teknium1 eb0d19f
fix(update): an unmapped stopped gateway's restart debt needs its own…
teknium1 05355f7
docs(update): hermes_cli/AGENTS.md states the post-commit exit rule a…
teknium1 1b51277
fix(update): every owed follow-up reaches the Desktop hand-off result
teknium1 9586d99
fix(update): the gateway /update status follows a committed run's rec…
teknium1 be62eeb
fix(update): the prepared completion child runs in UTF-8 mode too
teknium1 69f6f5c
test(update): the gateway-status boundary tests stub the owning-insta…
teknium1 b2be749
docs(update): hermes_cli/AGENTS.md keeps the post-commit rule within …
teknium1 3b2d4ee
fix: an active config write failure still migrates siblings and resto…
teknium1 78cd7d3
fix: a same-SHA catch-up adds newly stopped unmapped gateways to the …
teknium1 c9f47c0
fix: the dashboard update status certifies an outcome only from its o…
teknium1 8c4a3d1
fix: dashboard, Desktop and managed SSH clients report a committed up…
teknium1 ec8e0cf
fix: dashboard owed-update toast string exists in every web locale
teknium1 4150ed1
test(update): the utf8-children test stubs the treeless-checkout conv…
teknium1 8494c28
fix: a named profile's updater and pm receipts see each other again
teknium1 2715cff
fix: a restarted dashboard keeps its update action identity past the …
teknium1 01d789b
fix: managed SSH results name owed work on restore-failed and partial…
teknium1 d09626b
fix: a post-commit follow-up is owed once, through one owe_followup h…
teknium1 c8d2025
fix: the dashboard reads update.log through the one log-path resolver
teknium1 8fc2475
fix: Desktop backend update names owed work on partial and receipt-pr…
teknium1 b299cf3
fix: dashboard update toast names a partial run's owed work, only fro…
teknium1 ea46a3a
fix: one lookup reads a run's archived receipt, with one error contract
teknium1 9d385c3
fix: a lost completion closes the run from the child's record, not th…
teknium1 8e22df1
test(e2e): under a sticky profile pm status shows the newest receipt,…
teknium1 189ce63
chore: retrigger CI (zero-job dispatch failure, auto-heal)
teknium1 File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
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
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
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
Oops, something went wrong.
Oops, something went wrong.
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.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
R7 · [P2] Carry this recovery message through both Update-all notification consumers
The formatter repair now works: this result and
managedSshUpdateAllRow(...).detailretain dependencies debt on restore failure and the manual stash instruction on a partial run. However, the row converter also gives every failed managed row a nonemptyerror. Both Update everything and Settings → Update all prefer that error to detail.Executed the source-extracted lifecycle → row → both actual notification callbacks with injected transport/bridge/state. A success receipt with dependencies debt plus
restoreScopethrowingError("restore refused")sends onlyrestore refusedto both notification APIs. Exit 1 / partial with a verbatimlocal_changesrecovery instruction sends onlyupdate-failed. In each case.detailstill has the complete recovery text. Clean and success-with-debt controls pass; removing only.errorrestores the message.Compose the detail and specific diagnostic through a shared presentation helper used by BOTH consumers; keep update/restore status independent and do not tell users an updater rerun restores a parked stash. Extend the regression past
.detailto capture actual notification arguments. This anchors the unadapted downstream consumer contract at the changed producer; it does not claimmanagedUpdateMessagestill has the repaired early return. No live SSH or mounted UI was exercised. Full matrix, RCA and limits are in R7 of the review.