Repository navigation
fix(graph-db): log the drifting corruption verdict at error level instead of staying silent - #4574
Merged
ScriptedAlchemy merged 3 commits intoOct 27, 2026
Conversation
A drifting fault (the second open reports different bytes than the first) is terminal and silent: nothing is deleted, nothing is rebuilt, and every later open repeats the verdict. Three containers sat in that state for 4-10 days on one machine, distinguishable from healthy only by a leftover lock file. The refusal now logs one error-level event naming the container, both faults, and the operator action. Half of ScriptedAlchemy#4571; surfacing the state in status/doctor stays tracked there.
|
The drifting-fault refusal now has a log-coverage assertion: the operator event fires exactly once per decision. The comment states the general invariant without the incident anecdote. Adds the runtime-core test-helpers dev-dependency for the tracing capture.
Contributor
Author
|
Both findings addressed in 1ecd052: the drifting-fault test now asserts the |
This was referenced Oct 27, 2026
The drifting-corruption test links tracedecay-runtime-core as a dev-dependency; the Bazel test targets did not carry the label, so the unit_test binary failed with E0433. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
ScriptedAlchemy
merged commit Oct 27, 2026
0d7c88d
into
ScriptedAlchemy:master
6 of 19 checks passed
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.
Logging half of #4571.
Problem
recover_deterministically_corrupt_container_withrefuses deletion when the verification open reports a different fault than the first verdict ("hardware-shaped", the module's words). That refusal is terminal for the container: nothing is deleted, nothing is rebuilt, and every later open repeats the verdict — with no operator-visible event. The store looks healthy from the outside; only a leftover.grafeo.corruption-lockhints at it. On one machine, three containers sat in this state for 4–10 days while callers retried forever.Change
The drifting-fault refusal now emits one
error-level event before returning:No behavior change otherwise — deletion still refuses, the typed
Corruptverdict is unchanged, and the existing corrupt-store tests (7/7) stay green. Surfacing this state intracedecay status/doctor stays tracked in #4571.