
    HjD                        d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZdZedz   Z	edz   Z
edz   Z e j                   ee	d            Zed   Zh d	Zd
 ZeD ]  Z ee      \  ed<   ed<   ed<   ed<    g Z e       Zd ZeD ]  Zed   ed   fev s ee         e ed eD                    D ]0  Zd ZeD ]'  Zed   ek(  sed   dk(  sedk  s ee       edz  Z) 2  eed       D ]  Zed   dk(  s ee        dD ]  ZeD ]  Zed   ek(  s ee          ee      dk\  sJ  ee             edd Z eed      D ]2  \  ZZdeded<   ed   ed   fev ed <   ed   dk(  xr ed!   d"k  ed#<   4 eD ]$  Zed    rd$n eed   d%d       d&z  d k(  rd'nd$ed(<   & eD  cg c]  } | d(   d'k(  s|  c} Z eD ]4  Z ee       d)k\  r n'ed    red(   d$k(  sd'ed(<   e jC                  e       6  ejD                  e      Z#e#jI                  d*       eD ]`  Ze#jK                  d+ed   ed   ed   ed   ed,   ed-   ed.   ed/   ed!   ed   ed   ed   ed    eed           eed#         ed(   f       b e#jM                  d0g d1       e#jO                          e#jQ                           ejR                  d2 eD              Z* e jV                  ej                  jY                  ejZ                  j\                        j_                         e	d3 ee       e0e*       e1d4 eD               e1d5 eD               e1d6 eD               e1d7 eD              ed8
 ee
d9      d:d;<        e2 e jf                  e
e ee       e0e*       e1d= eD               e1d> eD               e1d? eD               e1d@ eD              dAd:B             yc c} w )C    Nz0/opt/struktur/reports/aa043-p38/20260828T083500Zz/p38-candidate-pool.jsonz/p38-reference-set.jsonz/p38_reference.sqliteutf8)encodingpairs>   i  i  Z      w      c                     | d   | d   f}|t         v ry| d   }| d   }| d   | d   f}|r|d   r|d	   r|d   |d	   k7  r|d
k\  ry|dk\  s|r|dk\  ry|d
k  r|syy)Nku_aku_b)
SAME_CLAIMzBRegression audit: same atomic claim; wording/transcription differszwording/transcription
compatible
similaritycommon_entities	numbers_a	numbers_br      {Gz?)RELATED_NOT_SAMEz=Same named entity but different numeric/version/content claimznumeric/versionz requires temporal/version reviewg)\(?g?)r   zUThematic/entity overlap, but subject, object, scope or intent is not proven identicalzscope/object/intentznot established)	UNRELATEDz?Low-similarity cross-source control; no shared fachliche entitynonezn/a)	UNCERTAINz]Short or context-poor overlap; equality and contradiction cannot be established from KU alonezcontext/granularityunclear)forced)pksimentnumss        %/opt/struktur/AA-043-P38-reference.pymanualr$      s    fIaiK  P|_!-.canQ{^5TDGQDGT!W$4d 
RI##t) 
]HS	d 	U    manual_classificationaudit_reasondiffering_dimensionaudit_temporal_scopec                     | d   | d   f}|t         vr>t        t              dk  r+t        j                  |        t         j	                  |       y y y )Nr   r      )seenlenselappendadd)xr   s     r#   r0   r0      s=    fIaiTMc#hslCJJqM488A;lMr%   r   r   c              #   &   K   | ]	  }|d      yw)clusterN .0r1   s     r#   	<genexpr>r7      s     1aQy\1   r3   r      r   c                 &    | d   | d   | d   | d   fS )Nr   r3   r   r   r4   r1   s    r#   <lambda>r<      s    AlOAiL61V9#U r%   )keyr   )r   r   r   d   r+   zP38-03dpair_idis_regressionr   r   
is_controldevelopment   holdoutsplit   av  create table reference_pairs(pair_id text primary key,cluster text,ku_a integer,ku_b integer,source_a text,source_b text,statement_a text,statement_b text,similarity real,manual_classification text,audit_reason text,differing_dimension text,temporal_scope text,is_regression integer,is_control integer,split text); create table audit_policy(name text primary key,rule text);zCinsert into reference_pairs values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)source_asource_bstatement_astatement_bz$insert into audit_policy values(?,?)))r   u   Nur materiell identische atomare Aussage; keine Differenz in Subjekt, Prädikat, Objekt, Negation, Zahl, Einheit, Zeit, Version, Bedingung oder Geltungsbereich.)r   uC   Reale fachliche Nähe, aber materielle oder kontextuelle Differenz.)CONTRADICTIONuu   Nur inkompatible Aussagen zum selben prüfbaren Gegenstand mit kompatiblem Scope; keine belastbaren Fälle im Korpus.)r   zERealer Low-Similarity-Kontrollfall ohne gemeinsame fachliche Aussage.)r   uI   Kontext oder KU-Granularität reicht für sichere Entscheidung nicht aus.c              #   &   K   | ]	  }|d      yw)r&   Nr4   r5   s     r#   r7   r7   4   s     D1A56Dr8   zRdeterministic conservative pairwise adjudication with original statements retainedc              #   &   K   | ]	  }|d      ywrA   Nr4   r5   s     r#   r7   r7   5   s0       Bc  Z[  CD  ET  CU  Bcr8   c              #   &   K   | ]	  }|d      ywrB   Nr4   r5   s     r#   r7   r7   5   s0       rP  GH  st  uA  sB  rPr8   c              #   ,   K   | ]  }|d    dk(    ywrG   rC   Nr4   r5   s     r#   r7   r7   5   s>       bJ  AB  cd  el  cm  o|  c|  bJ   c              #   ,   K   | ]  }|d    dk(    ywrG   rF   Nr4   r5   s     r#   r7   r7   5   s>       X|  st  YZ  [b  Yc  en  Yn  X|rU   )

checked_atsource_poolaudit_policytotallabelsregressionscontrolsrC   rF   r   wF   )ensure_asciiindentc              #   &   K   | ]	  }|d      ywrP   r4   r5   s     r#   r7   r7   6   s$       lM  DElmn}l~  lMr8   c              #   &   K   | ]	  }|d      ywrR   r4   r5   s     r#   r7   r7   6   s0       \z  qr  ]^  _k  ]l  \zr8   c              #   ,   K   | ]  }|d    dk(    ywrT   r4   r5   s     r#   r7   r7   6   s>       Lt  kl  MN  OV  MW  Yf  Mf  LtrU   c              #   ,   K   | ]  }|d    dk(    ywrW   r4   r5   s     r#   r7   r7   6   s>       Bf  ]^  CD  EL  CM  OX  CX  BfrU   )reference_setsqliter[   r\   r]   r^   rC   rF   )ra   )4jsonsqlite3re	itertoolscollectionsosdatetimehashlibBASEPOOLOUTDBloadopendr   r   r$   r   r.   setr,   r0   r1   sortedclnlabelr-   	enumerateiintholdr/   connectcexecutescriptexecuteexecutemanycommitcloseCountersummarydumpnowtimezoneutc	isoformatdictsumprintdumpsr;   s   0r#   <module>r      s   @ @ @ @7dC]>]cg  iB  dB_b  GK  Lc  Gc  DF$))Dv&'qzB`6
U 
 yApvwxpyo)*1^+<Q?T=UVWXnVo ySU? 
 ,AvYqyV#SV, 1511
2 _B
 _Qy\2!346HHQqSRUVWRXZ[]^Z^Z[__
 
U	V 4A+SV4 : /E
 /Q&A// 3x} c#h }IS  CAaD3.Qy\aPViXYZ`XaMbflMl!O:L~  AX  Y  [f  f    kl  my  kz  {  knop|n}  	 A!O*<PSTUV_T`acadTePfghPhjkPk)raj .A'
I-a.	 _AIrM5	/qz=8Y!G*PTP[P[\]P^_ '//"q  (d  e	  uAaii]_`aj_klmnwlxyz  |B  zC  DE  FL  DM  NO  PZ  N[  \]  ^h  \i  jk  ly  jz  {|  }J  {K  LM  NZ  L[  \]  ^u  \v  wx  yG  wH  IJ  K`  Ia  bc  dz  b{  |  @A  BQ  @R  |S  TW  XY  Zf  Xg  Th  ij  kr  is  _t  u  u 4  7	  @
  B
C
  B
J
  B
J
  B
L
  N
O
  N
U
  N
U
  N
W
DDD 			))--h.?.?.C.CDNNP_c  tH  QT  UX  QY  cg  ho  cp  B  Bc  _b  Bc  c  or  rP  LO  rP  oP  _b  bJ  FI  bJ  _J  UX  X|  x{  X|  U|  EH  I  JN  OR  SV  JW  ej  rs  t jdjj#r#c(DQXMhk  lM  IL  lM  iM  Y\  \z  vy  \z  Yz  IL  Lt  ps  Lt  It  B  Bf  be  Bf  f  g  uz  {  | /s   0O>O