An automatic merge is gated by what it can undo - #474
Merged
Merged
Conversation
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Signed-off-by: WaylandYang <wayland0916@gmail.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Signed-off-by: WaylandYang <wayland0916@gmail.com>
WaylandYang
force-pushed
the
feat/a-decision-records-why
branch
from
September 8, 2026 04:38
f816a11 to
7d94fd0
Compare
Signed-off-by: WaylandYang <wayland0916@gmail.com> # Conflicts: # docs/decisions/README.md # web/src/i18n/en.ts # web/src/i18n/zh.ts
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.
Closes #357. Stacked on #473 (0026); rebases onto dev once that merges.
Record: new 0027 · An automatic merge is gated by what it can undo.
What changes
execution_gatein the store.impact_of(pool, kb, a, b)reads what a merge would touch;hold(&impact)is the pure judgement. Three things, in order, and any one holds the pair for a person whatever the confidence:functionalpredicate pointing at different entities (inverse_functionalsymmetrically) — merged, that is thefunctionalviolation the consistency check would open; same yardstick astoo_manyin the reasoning crate (entity-object edges, no time, no literals);conversation_messages.resolved, assistant turns).auto_merged, the governor beforegoverned(after the survivor check, beforemerge_direction). A held pair is escalated asescalate_impact|<kind> <value>(contradiction CEO of,derived 12,answered 3); the governor also records its look as a proposal whose reason beginsheld for a person: …, with the model's own reason after it.Verified
an_automatic_merge_is_gated_by_what_it_can_undo(new) on the real database: nothing touched → no hold; a functional clash →Contradiction("CEO of")both ways; an invalidated or same-valued fact → none; a standing derivation →Derived(1), invalidated → none; an assistant turn that resolved one side →Answered(1)(user turns and other entities not counted). Three unit tests onholdordering and rendering. clippy and fmt clean.tscand the style guard clean.🤖 Generated with Claude Code