Skip to content

A confident merge waits for no one, and a succession clashes with nothing - #696

Merged
WaylandYang merged 3 commits into
devfrom
fix/a-confident-verdict-is-acted-on
Sep 14, 2026
Merged

WaylandYang merged 3 commits into
devfrom
fix/a-confident-verdict-is-acted-on

Conversation

@WaylandYang

@WaylandYang WaylandYang commented Sep 14, 2026

Copy link
Copy Markdown
Contributor

Closes #693. A merge the adjudicator is confident about is no longer held for a person by a random sample. The execution gate reads time before calling two values a contradiction. The lease and recall benches now run with governance on, as a new base does.

Why

On the Blackbaud lease bench (dev 0306d0c) the lease stayed split into several entities. Questions about it came back with several answers: 9 and 7 of 18 right, with 6 partial in each run. The merges that would have joined it were held by two things:

  • The sample (0026 decision 5). "…as amended" vs "Lease Agreement" was judged the same at 0.95 and held as escalate_sample.
  • The gate (0027 decision 5). "Lease Agreement" and "Lease Agreement dated May 16, 2016" each hold one landlord, HPBB1 then BBHQ1. That is a succession, but the gate's query ignores time and held the pair as contradiction landlord. The consistency check has read time since Two values clash only while both hold #635; the gate never followed.

The benches also turned governance off, so they measured a configuration users don't run.

What changes

  • adjudication.rs: HUMAN_SAMPLE_PCT and the sampling branch are removed. A confident verdict goes straight to the gate. Rows escalated as escalate_sample earlier keep their label, and the governor takes them like any waiting pair.
  • temporal::merge_would_overlap: takes both sides' rows on each unique predicate as one timeline and ends each row the way the engine would (desired_ends). It then asks whether two different values still hold at one moment:
    • Contradictions: the same start, a value with no time, a successor too doubtful to take over, or two stated intervals that cross.
    • Not a contradiction: a succession.
    • Event and eternal predicates are compared as their rows stand.
    • The pure part, still_overlaps, has unit tests.
  • execution_gate::impact_of uses it for contradictions; derived facts and answers are unchanged.
  • Only a clash the merge brings in counts. If every value one side holds is already held by the other, the merged entity keeps the same values, so any clash was there before the merge. The lease bench hit this: one lease entity already carried two undated landlords, another name for it carried one of them, and a 0.98 merge was held for "two landlords".
  • Benches: lease_bench.py and recall.mjs set governance = true. Ontology growth and inference materialization stay off, so two runs share an ontology.
  • 0026: decision 5 gets a dated revision note, and the status line and index row are updated.
  • 0027: decision 5 gets a revision note, the "time-aware contradictions" dead end is answered, and the index row is updated.

Checks

  • a_value_that_took_over_from_another_is_not_a_contradiction (store): CEO Alice from 2019 on one name and Bob from 2021 on the other are not held. The same start on both sides still is.
  • two_values_overlap_only_when_the_engine_cannot_order_them (unit): succession, same day, no time, crossing stated intervals, eternal.
  • Suites: cargo test -p utopia-store 265 passed and -p utopia-server 278 passed, on a fresh database. clippy -D warnings and fmt are clean.
  • a_clash_one_side_already_had_is_not_the_merges (store): fails without the change and passes with it.
  • Lease bench (Blackbaud HQ lease chain, 18 as-of questions), on a build with this, A value written in a table is stated #697, Facts and conflicts are governed like duplicates #699 (with its lock fix) and An agreement keeps its identity through its amendments #706: 13/18 with 1 partial and 17/18 with 0 partial. dev scored 9/18 and 7/18, each with 6 partial.

🤖 Generated with Claude Code

…hing

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Signed-off-by: WaylandYang <wayland0916@gmail.com>
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Signed-off-by: WaylandYang <wayland0916@gmail.com>
@WaylandYang
WaylandYang merged commit c9c259a into dev Sep 14, 2026
4 checks passed
@WaylandYang
WaylandYang deleted the fix/a-confident-verdict-is-acted-on branch September 14, 2026 15:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

A confident merge waits for no one, and a succession clashes with nothing

1 participant