This commit is contained in:
team3
2026-07-05 23:03:00 +02:00
parent ed5cf146c3
commit f4c5116abb
4 changed files with 116 additions and 3 deletions

View File

@@ -44,7 +44,7 @@ from blocks import (
_completion_schema, _containment_parent, _crawl_index, _file_payload,
_filter_schema, _filter_suspect, _is_artifact, _is_named_statement,
_is_parentless_noise, _is_reference, _pairs_schema, _read,
_relation_conflict, _root, _supplement_schema, _text_sections, _umbrella_schema,
_direction_conflict, _relation_conflict, _root, _supplement_schema, _text_sections, _umbrella_schema,
_aspect_marker, _title_variants, _corpus_files, _evidence_pack, _sink_json, source_folder,
)
from config import (QA_GATE_NOTE, QA_GATE_LLM,
@@ -423,7 +423,8 @@ async def _pair_one(ctx: GenContext, flow: Flow, c):
for ci, chunk in enumerate(chunks):
verdict = _pairs_schema(_json_file(flow.work_dir / f"pair-{cid}-{h}-c{ci}.json")) or {}
for j, (a, b) in enumerate(chunk):
if verdict.get(j + 1) and not _relation_conflict(rows[a]["title"], rows[b]["title"]):
# Judge entscheidet Operanden-Identität selbst; nur getauschte Richtung bleibt geblockt
if verdict.get(j + 1) and not _direction_conflict(rows[a]["title"], rows[b]["title"]):
edges.append((a, b))
if sims_title is not None: # auto recall net: near-identical titles merge without the judge
for a, b in ordered:
@@ -1182,7 +1183,10 @@ async def _proc_dedup(ctx: GenContext, flow: Flow, cards):
detail: dict[tuple[int, int], str] = {}
def _edge(a, b, kanal):
if _relation_conflict(allrows[a]["title"], allrows[b]["title"]):
# Auto-Merges (kein Judge): voller String-Guard. Judge-Kanal ("ja"): nur der deterministische
# Richtungs-Guard — Operanden-Identität (Synonym vs. echt verschieden) hat der Judge entschieden.
guard = _direction_conflict if kanal == "ja" else _relation_conflict
if guard(allrows[a]["title"], allrows[b]["title"]):
detail[(a, b)] = "guard_veto"
else:
edges.append((a, b))