Retracted means retracted - #257
Merged
Merged
Conversation
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Merged
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.
Fixes #202.
"Data is wrong" only marked the violation resolved; the fact stayed in the graph, and the next check hit the resolved row and stayed silent — the ledger said retracted, the graph disagreed, and the queue never mentioned it again.
The decision names a fact and retracts it.
POST …/violations/{id}takesfact_idforfact_retracted; single-fact kinds (self loop, signature, derived contradiction) pick it themselves, andpick_retractionaccepts only a fact the violation lists (left, right or the cycle path).reasoning::retract_from_violationgoes throughreject_fact—invalidated_at, evidence untouched, ledger snapshot in the audit log — then marks the row resolved, and the handler reruns the check so any other violation that fact was part of clears too. The cards for asymmetry, functional and cycle show a Retract button per fact; cycle cards now list the path (open_violationsreturnspathas id + text).The queue stays honest. When
runrecomputes a violation whose row is resolved with a resolution that promised a change (fact_retracted,fact_closed,axiom_relaxed), the row is reopened — the promise did not hold.acceptedkeeps its silence. The report countsreopened.Test:
a_retraction_leaves_the_graph— retract one side of an asymmetry, the other stays and the rerun is quiet; a fact outside the violation is refused; a self loop needs no choice;axiom_relaxedwith the axiom still declared reopens,accepteddoes not.Verified in the isolated environment: an asymmetric pair shows two Retract buttons, one click retracts that fact, the card leaves the queue, the ledger and audit log agree.
0002 carries a revision note.
🤖 Generated with Claude Code