automapper-validation 0.12.0

AHB condition expression parsing, evaluation, and EDIFACT validation
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
{
  "generated_at": "2026-03-12T10:26:58Z",
  "ahb_file": "ORDERS_AHB_1_0a_Fehlerkorrektur_20250623.xml",
  "format_version": "FV2504",
  "conditions": {
    "547": {
      "confidence": "high",
      "reasoning": "Hinweis condition — informational annotation about document number origin, always applies unconditionally.",
      "description_hash": "3d0a9132",
      "is_external": false
    },
    "96": {
      "confidence": "high",
      "reasoning": "Code list membership check against chapter 2.2 of Codeliste der Konfigurationen ('Standard-Messprodukte der Tranche'). External code list not derivable from EDIFACT message content alone.",
      "description_hash": "00d3f7e9",
      "is_external": true
    },
    "574": {
      "confidence": "high",
      "reasoning": "Hinweis: informational note, always applies unconditionally.",
      "description_hash": "3a8b5b15",
      "is_external": false
    },
    "2065": {
      "confidence": "low",
      "reasoning": "This condition describes SG30 repetition cardinality based on whether products in the PIA+5 DE7140 appear in Kapitel 4.4 'Messprodukte mit Konfigurationserlaubnis für Werte nach Typ 2 aus SMGW' code list with the value 'Bei Schwellwertunter- / -überschreitung'. Evaluating this requires access to an external code list (Kapitel 4.4) that is not derivable from the EDIFACT message segments alone — it is a product classification lookup. Marked external with low confidence.",
      "description_hash": "aae8ce72",
      "is_external": true
    },
    "530": {
      "confidence": "high",
      "reasoning": "Hinweis condition — informational annotation about the value origin from BGM+310 DE1004 of the QUOTES message used for the offer, always applies unconditionally.",
      "description_hash": "39940978",
      "is_external": false
    },
    "158": {
      "confidence": "high",
      "reasoning": "References Kapitel 6.2 code list membership — always external per the rules. The valid product codes are defined in an external configuration code list, not derivable from the EDIFACT message itself.",
      "description_hash": "0e6d6db2",
      "is_external": true
    },
    "175": {
      "confidence": "high",
      "reasoning": "NAD+DP present AND RFF+Z59 present (both message-wide)",
      "description_hash": "0d0907f0",
      "is_external": false
    },
    "515": {
      "confidence": "high",
      "reasoning": "This is a 'Hinweis' (informational note) explaining that the Betrachtungszeitintervall determines the inclusive start/end of a subscription. It provides documentation context, not an evaluatable boolean condition.",
      "description_hash": "bed3d17c",
      "is_external": false
    },
    "55": {
      "confidence": "high",
      "reasoning": "DTM+469 is the 'Beginn zum nächstmöglichen Termin' segment where elements[0][0] (C507.DE2005) has qualifier 469. lacks_qualifier returns True when no such DTM exists in the message.",
      "description_hash": "01303b4a",
      "is_external": false
    },
    "493": {
      "confidence": "medium",
      "reasoning": "Whether the MP-ID in NAD+MR belongs to the Gas sector cannot be determined from the EDIFACT message alone — it requires a market participant registry lookup.",
      "description_hash": "75612dee",
      "is_external": true
    },
    "575": {
      "confidence": "high",
      "reasoning": "Hinweis: informational note describing when a fixed point in time is used, always applies unconditionally.",
      "description_hash": "09247b79",
      "is_external": false
    },
    "119": {
      "confidence": "high",
      "reasoning": "LIN++Z66 means elements[1][0]=='Z66'. Check if any LIN segment has Erforderliches Produkt Ad-hoc-Steuerkanal code Z66.",
      "description_hash": "904c2d3b",
      "is_external": false
    },
    "155": {
      "confidence": "high",
      "reasoning": "Checks if the used product code belongs to the 'Steuerbare Ressource' level in the Kapitel 7 product configuration code list. Requires external code list lookup.",
      "description_hash": "8e99bdf3",
      "is_external": true
    },
    "68": {
      "confidence": "high",
      "reasoning": "Simple absence check: DTM segment where elements[0][0] == '7' (Zeitpunkt für Wertanfrage) is not present.",
      "description_hash": "7adc5fb9",
      "is_external": false
    },
    "99": {
      "confidence": "high",
      "reasoning": "FTX+Z08/Z10 means elements[0][0] is Z08 or Z10. Check presence in SG29 group instances using group-scoped any-qualifier helper.",
      "description_hash": "04d08624",
      "is_external": false
    },
    "514": {
      "confidence": "high",
      "reasoning": "This is a 'Hinweis' (informational note) about subscriptions starting no earlier than the current delivery month. It provides documentation context, not an evaluatable boolean condition.",
      "description_hash": "501d02b2",
      "is_external": false
    },
    "13": {
      "confidence": "high",
      "reasoning": "Absence check: LOC segment with elements[0][0]=='172' (Meldepunkt qualifier) must NOT exist in the message.",
      "description_hash": "73573a68",
      "is_external": false
    },
    "133": {
      "confidence": "high",
      "reasoning": "Whether the ID in LOC+172 DE3225 belongs to a Steuerbare Ressource cannot be determined from message structure alone — requires external registry lookup to identify the ID type.",
      "description_hash": "4ed7449e",
      "is_external": true
    },
    "177": {
      "confidence": "high",
      "reasoning": "IMD with elements[1][0]=\"Z66\" NOT present (message-wide)",
      "description_hash": "21dd53eb",
      "is_external": false
    },
    "518": {
      "confidence": "high",
      "reasoning": "This is a 'Hinweis' (informational note) explaining that the Ausführungsdatum determines the inclusive start/end of a subscription. It provides documentation context, not an evaluatable boolean condition.",
      "description_hash": "668affb4",
      "is_external": false
    },
    "542": {
      "confidence": "high",
      "reasoning": "Hinweis: informational annotation describing the origin of the BGM document number value, always applies unconditionally.",
      "description_hash": "4a1d308a",
      "is_external": false
    },
    "560": {
      "confidence": "high",
      "reasoning": "Hinweis condition — informational annotation about field origin, always applies unconditionally.",
      "description_hash": "5da049c7",
      "is_external": false
    },
    "2044": {
      "confidence": "medium",
      "reasoning": "Per SG29 LIN, the SG29 PIA segment must appear exactly once. We count PIA segments in the message and check for exactly one occurrence. This is a structural cardinality check on the PIA segment.",
      "description_hash": "4800882f",
      "is_external": false
    },
    "2063": {
      "confidence": "medium",
      "reasoning": "Count LIN segments where elements[1][0]==\"Z67\" (LIN++Z67, Messprodukt Typ 2 Backend). Condition is True when at most one such SG29 line item is present per message.",
      "description_hash": "8f980d8d",
      "is_external": false
    },
    "9": {
      "confidence": "medium",
      "reasoning": "'Wenn bekannt' (when known) depends on whether a value is known in the business context — cannot be derived from EDIFACT segments alone.",
      "description_hash": "963140b3",
      "is_external": true
    },
    "121": {
      "confidence": "high",
      "reasoning": "LIN++Z68 means elements[1][0]=='Z68'. Check if any LIN segment has Erforderliches Produkt Konfigurationserlaubnis für Werte nach Typ 2 aus SMGW code Z68.",
      "description_hash": "d7d5b002",
      "is_external": false
    },
    "553": {
      "confidence": "high",
      "reasoning": "Hinweis condition — informational annotation about usage of Steuerbare Ressource ID. Always returns True.",
      "description_hash": "9dd0a791",
      "is_external": false
    },
    "2088": {
      "confidence": "high",
      "reasoning": "This condition documents the required repetition count for SG29 (once per Messprodukt of the Netzlokation in SG2 starting from the DTM+203 Ausführungsdatum). It is a cardinality/documentation note, not a boolean predicate. → Hinweis pattern.",
      "description_hash": "942b02f9",
      "is_external": false
    },
    "46": {
      "confidence": "high",
      "reasoning": "IMD++Z46 is the 'Grund der Anforderung' IMD in SG29 where elements[0] is empty and elements[1][0] (C272.DE7081) has code Z46. The schema lists Z46 as a valid code for that field. has_qualifier checks elements[1][0]==\"Z46\".",
      "description_hash": "21b79493",
      "is_external": false
    },
    "125": {
      "confidence": "high",
      "reasoning": "Code list membership check against chapter 4.1 of Codeliste der Konfigurationen ('Konfigurationsprodukte Schaltzeitdefinition'). Restricts allowed configuration product codes to a specific external code list chapter — not derivable from EDIFACT message content alone.",
      "description_hash": "895d62df",
      "is_external": true
    },
    "153": {
      "confidence": "high",
      "reasoning": "Checks if the used product code belongs to the 'Messlokation' level in the Kapitel 7 product configuration code list. This requires an external code list lookup — the EDIFACT message contains the product code but not its category classification.",
      "description_hash": "cb78f0b0",
      "is_external": true
    },
    "135": {
      "confidence": "high",
      "reasoning": "LIN++Z64 parses to elements[0]=empty, elements[1][0]='Z64'. lacks_qualifier checks that no LIN segment has elements[1][0]=='Z64', i.e., the Schaltzeitdefinitionen product line is absent.",
      "description_hash": "ac6e403b",
      "is_external": false
    },
    "110": {
      "confidence": "high",
      "reasoning": "DTM+163 means elements[0][0]=163 (Beginn Zeitraum für Wertanfrage). Message-wide presence check using has_qualifier at element index 0.",
      "description_hash": "165c3e55",
      "is_external": false
    },
    "951": {
      "confidence": "high",
      "reasoning": "Format: Zählpunktbezeichnung — 33 alphanumeric characters. In ORDERS, the Zählpunkt/Messlokation identifier is carried in LOC+Z17 elements[1][0] (C517.D3225). validate_zahlpunkt enforces exactly 33 alphanumeric chars.",
      "description_hash": "f35fc481",
      "is_external": false
    },
    "35": {
      "confidence": "high",
      "reasoning": "IMD++Z14+Z06 is the Lieferrichtung IMD. Per the schema: elements[0] is empty (DE7077 format code), elements[1][0]=Z14 (C272.DE7081, Lieferrichtung), elements[2][0]=Z06 (C273.DE7009, 'Marktlokation liefert Energie ins Netz'). Both components must match simultaneously, so low-level iteration is needed.",
      "description_hash": "121ca79f",
      "is_external": false
    },
    "67": {
      "confidence": "high",
      "reasoning": "Simple absence check: DTM segment where elements[0][0] == '163' (Beginn Zeitraum für Wertanfrage) is not present.",
      "description_hash": "cc33f228",
      "is_external": false
    },
    "112": {
      "confidence": "medium",
      "reasoning": "In same SG29: LIN with elements[1][0]=Z54 (Erforderliches Produkt der Marktlokation) co-occurs with PIA where elements[1][0]=9991000000078 (Wirkarbeit Lastgang 1/4h, product code from C212.DE7140). Co-occurrence check scoped to SG29.",
      "description_hash": "b059e88a",
      "is_external": false
    },
    "131": {
      "confidence": "high",
      "reasoning": "Whether the ID in LOC+172 DE3225 belongs to a Messlokation cannot be determined from message structure alone — requires external registry lookup to identify the ID type.",
      "description_hash": "69886ac5",
      "is_external": true
    },
    "86": {
      "confidence": "low",
      "reasoning": "Condition checks if PIA+5 DE7140 contains a product code from 'Codeliste der Konfigurationen Kapitel 2.3.1 Standard-Messprodukt der Messlokation mit der Wahlmöglichkeit der Zuordnung einer Zählzeit' in the same SG29 where LIN DE1229=Z19. The specific product codes from that external code list cannot be determined from the EDIFACT message alone — membership in Kapitel 2.3.1 requires access to the external configuration code list.",
      "description_hash": "52f1b44c",
      "is_external": true
    },
    "535": {
      "confidence": "high",
      "reasoning": "Starts with 'Hinweis:' — informational annotation stating the electricity sector metering location ID is used. Not a boolean predicate. Always returns True.",
      "description_hash": "1f6999f8",
      "is_external": false
    },
    "7": {
      "confidence": "high",
      "reasoning": "Market participant role NB (Netzbetreiber) for NAD+MS cannot be determined from the EDIFACT message alone — requires external business context.",
      "description_hash": "64969eed",
      "is_external": true
    },
    "554": {
      "confidence": "high",
      "reasoning": "Hinweis condition — informational annotation describing where the value comes from (BGM+Z74 DE1004 of QUOTES). Always returns True.",
      "description_hash": "51419df2",
      "is_external": false
    },
    "47": {
      "confidence": "high",
      "reasoning": "Negation of condition 46: True when no IMD segment has elements[1][0]==\"Z46\". lacks_qualifier returns True if no matching segment exists.",
      "description_hash": "b6017810",
      "is_external": false
    },
    "129": {
      "confidence": "low",
      "reasoning": "Validates that the product code in PIA+5 DE7140 is contained in the code list from Kapitel 4.4 'Messprodukte mit Konfigurationserlaubnis für Werte nach Typ 2 aus SMGW'. This is an external code list membership check that cannot be determined from the EDIFACT message content alone — the allowed product codes are defined in an external configuration document.",
      "description_hash": "27513ce1",
      "is_external": true
    },
    "2": {
      "confidence": "high",
      "reasoning": "BGM+7: elements[0][0] (DE1001 Dokumentenname, Code) == '7'. Schema confirms code '7' is a valid BGM qualifier.",
      "description_hash": "3b330761",
      "is_external": false
    },
    "16": {
      "confidence": "medium",
      "reasoning": "Generic structural condition: 'if a subordinate SG is present'. Depends entirely on which child segment group is being checked in context — the condition number is reused across many segment rows with different child SGs. Cannot be resolved from the EDIFACT message content alone; requires the validation framework to supply structural position context.",
      "description_hash": "269f3a66",
      "is_external": true
    },
    "115": {
      "confidence": "high",
      "reasoning": "LIN DE1229 is at elements[1][0]. Check if any LIN segment has code Z70 (Leistungskurvendefinition) at that position.",
      "description_hash": "5df5a1d9",
      "is_external": false
    },
    "117": {
      "confidence": "high",
      "reasoning": "LIN++Z64 means elements[1][0]=='Z64'. Check if any LIN segment has Erforderliches Produkt Schaltzeitdefinitionen code Z64.",
      "description_hash": "8a8a1348",
      "is_external": false
    },
    "559": {
      "confidence": "high",
      "reasoning": "Hinweis condition — informational annotation about field origin, always applies unconditionally.",
      "description_hash": "e5ec5dc8",
      "is_external": false
    },
    "143": {
      "confidence": "low",
      "reasoning": "Checks whether the ID in LOC+172 DE3225 (Meldepunkt, elements[1][0]) identifies a Steuerbare Ressource. The LOC+172 segment can be found in the message, but determining whether the ID belongs to a Steuerbare Ressource (as opposed to a Marktlokation, Messlokation, or other location type) requires external business context — the ID's type is not encoded in the LOC+172 segment itself.",
      "description_hash": "4ed7449e",
      "is_external": true
    },
    "114": {
      "confidence": "high",
      "reasoning": "LIN DE1229 is at elements[1][0]. Check if any LIN segment has action code Z69 (Schaltzeitdefinition) — message-wide presence check.",
      "description_hash": "197e61ce",
      "is_external": false
    },
    "17": {
      "confidence": "medium",
      "reasoning": "Generic structural condition: 'if a segment within the SG is present'. Like [16], this condition number is reused across many rows and the specific segment being checked depends on the validation context. Cannot determine which segment to check without positional context supplied externally.",
      "description_hash": "587b0fdd",
      "is_external": true
    },
    "527": {
      "confidence": "high",
      "reasoning": "Hinweis condition — informational annotation about the metering point of BG-SZR category B, always applies unconditionally.",
      "description_hash": "a59cce20",
      "is_external": false
    },
    "531": {
      "confidence": "high",
      "reasoning": "Starts with 'Hinweis:' — informational annotation describing where the LIN position number value comes from (the QUOTES message). Not a boolean predicate. Always returns True.",
      "description_hash": "6806d427",
      "is_external": false
    },
    "517": {
      "confidence": "high",
      "reasoning": "This is a 'Hinweis' (informational note) — 'Zählpunkt der LF-AASZR'. It provides documentation context about the field, not an evaluatable boolean condition.",
      "description_hash": "c548759f",
      "is_external": false
    },
    "506": {
      "confidence": "high",
      "reasoning": "This is a 'Hinweis' (informational note) about the date until which the MSBA is obligated to continue. It provides documentation context, not an evaluatable boolean condition.",
      "description_hash": "96174726",
      "is_external": false
    },
    "21": {
      "confidence": "high",
      "reasoning": "BGM+Z28: elements[0][0] (DE1001 Dokumentenname, Code) == 'Z28'. Schema lists Z28 as a valid BGM qualifier.",
      "description_hash": "33002768",
      "is_external": false
    },
    "169": {
      "confidence": "high",
      "reasoning": "In same SG29: LIN with elements[1][0]=\"Z19\" AND CCI with elements[0][0]=\"Z39\" (co-occurrence in SG29)",
      "description_hash": "4bf9dc92",
      "is_external": false
    },
    "911": {
      "confidence": "high",
      "reasoning": "This is a format/cardinality annotation describing that sequence numbers start at 1 and increment. It documents expected usage rather than expressing a boolean predicate, so it is treated as a Hinweis-style note that always applies.",
      "description_hash": "d1f33af5",
      "is_external": false
    },
    "563": {
      "confidence": "high",
      "reasoning": "Hinweis: informational annotation, always applies unconditionally",
      "description_hash": "3a807315",
      "is_external": false
    },
    "64": {
      "confidence": "high",
      "reasoning": "Simple absence check: NAD+Z03 (Messlokationsadresse) not present in message. elements[0][0] == 'Z03'.",
      "description_hash": "853932c3",
      "is_external": false
    },
    "519": {
      "confidence": "high",
      "reasoning": "This is a 'Hinweis' (informational note) about Gas profile values — requirements cover both preliminary and final profile values. It provides documentation context, not an evaluatable boolean condition.",
      "description_hash": "eeb4e20c",
      "is_external": false
    },
    "961": {
      "confidence": "high",
      "reasoning": "Format: SR-ID (Steuerbare Ressource ID) — SR-IDs use the same 11-digit Luhn check format as Marktlokations-IDs and Netzlokations-IDs in the German energy market. Extract from LOC+Z19 (SteuerbareRessource qualifier) elements[1][0] (C517.D3225). validate_malo_id validates the shared 11-digit Luhn format.",
      "description_hash": "99d3e1d7",
      "is_external": false
    },
    "2092": {
      "confidence": "medium",
      "reasoning": "SG29 is initiated by the LIN segment. Count all LIN segments in the message and verify there is at most one, making the condition True when the cardinality constraint is satisfied.",
      "description_hash": "6cb43d05",
      "is_external": false
    },
    "159": {
      "confidence": "high",
      "reasoning": "References Kapitel 6.2 code list column lookup — whether the PIA+5 product code in the current SG29 has a 'Code der Produkteigenschaft (Wertebereich)' entry in that external table is not determinable from the EDIFACT message alone. Always external for Kapitel 6 code list references.",
      "description_hash": "d4f4e0fe",
      "is_external": true
    },
    "573": {
      "confidence": "high",
      "reasoning": "Hinweis informational note, always returns True.",
      "description_hash": "c27cdaf6",
      "is_external": false
    },
    "36": {
      "confidence": "high",
      "reasoning": "Whether the MP-ID in NAD+MR has the market role NB (Netzbetreiber) cannot be determined from the EDIFACT message — the NAD segment only carries the identifier, not the role. Requires external market participant registry lookup. External condition.",
      "description_hash": "28ff068c",
      "is_external": true
    },
    "2089": {
      "confidence": "high",
      "reasoning": "This is a Hinweis-style cardinality annotation describing how many times SG29 must repeat (once per Messprodukt from the referenced Marktlokation starting at DTM+203). It does not contain a boolean predicate (no 'Wenn'/'Falls') — it documents structural completeness requirements. Always returns True.",
      "description_hash": "b5a93490",
      "is_external": false
    },
    "87": {
      "confidence": "high",
      "reasoning": "Checks if any FTX segment has qualifier Z09 or Z10 at elements[0][0].",
      "description_hash": "c4979433",
      "is_external": false
    },
    "38": {
      "confidence": "high",
      "reasoning": "FTX+Z04 and FTX+Z05 are both qualifier codes for 'Beschreibung der Reklamation von Werten und Definitionen' at elements[0][0] (DE4451). Low-level iteration used for OR across two qualifier values on the same element.",
      "description_hash": "bea85c34",
      "is_external": false
    },
    "80": {
      "confidence": "medium",
      "reasoning": "Negation of condition 79 — no SG29 with LIN+Z54 AND PIA product 9991000000078.",
      "description_hash": "635a9e2c",
      "is_external": false
    },
    "176": {
      "confidence": "high",
      "reasoning": "NAD+DP present AND RFF+Z59 NOT present",
      "description_hash": "a7d3b464",
      "is_external": false
    },
    "141": {
      "confidence": "low",
      "reasoning": "Validates that the Messprodukt-Position-Code is in the code list from Kapitel 4.7 'Art der Werte für Messprodukte nach Typ 2'. This is an external code list membership check — the permitted position codes are defined in an external configuration document and cannot be evaluated from the message structure.",
      "description_hash": "84946022",
      "is_external": true
    },
    "54": {
      "confidence": "high",
      "reasoning": "FTX+Z06 checks for an FTX segment with qualifier Z06 at elements[0][0] (DE4451). This is a 'Beschreibung der Reklamation von Werten und Definitionen' with qualifier Z06.",
      "description_hash": "19937a2a",
      "is_external": false
    },
    "548": {
      "confidence": "high",
      "reasoning": "Hinweis condition — informational annotation about which MP-ID to use for Zählzeit configuration changes, always applies unconditionally.",
      "description_hash": "e960bfa0",
      "is_external": false
    },
    "566": {
      "confidence": "high",
      "reasoning": "Hinweis: informational annotation, always applies unconditionally",
      "description_hash": "135f179c",
      "is_external": false
    },
    "933": {
      "confidence": "high",
      "reasoning": "Format condition: HHMM must equal 2300. Uses validate_hhmm_equals helper on the DTM value element. DTM elements[0][1] contains the datetime value string.",
      "description_hash": "b5e9c81e",
      "is_external": false
    },
    "491": {
      "confidence": "high",
      "reasoning": "Check if the DTM value at position CCYYMMDDHHMM falls within German winter time (MEZ) as per Kapitel 3.6 table. Uses the is_mez_utc helper which implements EU DST rules for winter period.",
      "description_hash": "5e5e4325",
      "is_external": false
    },
    "147": {
      "confidence": "high",
      "reasoning": "COM segment has composite C076 at elements[0]: [communication_address, channel_code]. DE3155 (Kommunikationskanal, Qualifier) is at elements[0][1]. Checks if any COM segment has 'EM' (email) as channel code. Condition is scoped to 'demselben COM' meaning within any COM in the current context.",
      "description_hash": "eaf06e02",
      "is_external": false
    },
    "29": {
      "confidence": "high",
      "reasoning": "Whether the MP-ID in NAD+MR belongs to the Gas sector cannot be determined from the EDIFACT message structure alone — it requires a market participant registry lookup. External condition.",
      "description_hash": "aa60ed3a",
      "is_external": true
    },
    "2003": {
      "confidence": "high",
      "reasoning": "This condition describes how many times SG29 should repeat — it is a cardinality guidance annotation ('ist so oft zu wiederholen, wie...') documenting the expected repetition count based on external business data (Messlokationen for the Marktlokation). Such structural cardinality descriptions are informational Hinweis-style notes that always apply unconditionally. They cannot be validated as a boolean predicate purely from the EDIFACT message without external knowledge of the Marktlokation's associated Messlokationen.",
      "description_hash": "45cddeb5",
      "is_external": false
    },
    "81": {
      "confidence": "medium",
      "reasoning": "Group-scoped co-occurrence in the same SG29: LIN with Z54 at elements[1][0] AND PIA with product code 9991000000078 at elements[1][0]. Functionally equivalent to condition 79 since the API checks within the same group instance.",
      "description_hash": "5b70d6ba",
      "is_external": false
    },
    "522": {
      "confidence": "high",
      "reasoning": "Hinweis condition — informational annotation about using Messlokation ID, always applies unconditionally.",
      "description_hash": "d7954b75",
      "is_external": false
    },
    "932": {
      "confidence": "medium",
      "reasoning": "HHMM = 2200 time constraint on DTM. In ORDERS FV2504, delivery period end (qualifier 163) must terminate at 22:00 UTC, matching the standard German grid day-end convention. Medium confidence because the target DTM qualifier may differ for the specific AHB row — 163 is the most likely candidate for an end-of-period constraint.",
      "description_hash": "943b98c4",
      "is_external": false
    },
    "934": {
      "confidence": "high",
      "reasoning": "Format condition: HHMM must equal 0400. Uses validate_hhmm_equals helper on the DTM value element.",
      "description_hash": "d06a46c8",
      "is_external": false
    },
    "126": {
      "confidence": "low",
      "reasoning": "Condition validates that only configuration products from 'Codeliste der Konfigurationen Kapitel 4.2 Konfigurationsprodukte Leistungskurvendefinition' are used. The allowed product codes are defined in an external code list (Kapitel 4.2) and cannot be embedded in the evaluator without that reference. This is a code list membership check against an external authoritative list.",
      "description_hash": "b558b9cd",
      "is_external": true
    },
    "168": {
      "confidence": "high",
      "reasoning": "NAD+DP present AND RFF+Z20 NOT present",
      "description_hash": "d2fd6b36",
      "is_external": false
    },
    "906": {
      "confidence": "high",
      "reasoning": "Format condition: maximum 3 decimal places. Validates the numeric value in QTY element[0][1].",
      "description_hash": "97bdb0c7",
      "is_external": false
    },
    "2090": {
      "confidence": "high",
      "reasoning": "Check that at least one LOC+172 (Meldepunkt) segment has a 33-character identifier in elements[1][0] (DE3225). The condition is True when such a LOC+172 with 33-digit ID is present.",
      "description_hash": "d51e9b44",
      "is_external": false
    },
    "2060": {
      "confidence": "high",
      "reasoning": "Per message, SG29 with LIN+Z64 (Erforderliches Produkt Schaltzeitdefinitionen) may appear at most once. LIN DE1229 (Handlung Code) is at elements[1][0]. We count LIN segments where elements[1][0]==\"Z64\" and verify count <= 1.",
      "description_hash": "e2c63f96",
      "is_external": false
    },
    "170": {
      "confidence": "high",
      "reasoning": "In same SG29: CCI with elements[0]=\"Z37\" and elements[2][0]=\"ZD1\" (qualified value check in SG29)",
      "description_hash": "c088d8aa",
      "is_external": false
    },
    "2007": {
      "confidence": "high",
      "reasoning": "This condition describes the required repetition count for SG29 based on how many Messlokationen and their Messprodukte exist for the Netzlokation referenced in SG2. This is a cardinality/documentation note, not a boolean predicate resolvable from the EDIFACT message alone. → Hinweis pattern.",
      "description_hash": "6fbe3c66",
      "is_external": false
    },
    "18": {
      "confidence": "high",
      "reasoning": "IMD++Z11: the double-plus means elements[0] is empty (DE7077), and Z11 is at elements[1][0] (DE7081 in C272 Produkt/Leistung). Schema confirms Z11 is a valid code for DE7081.",
      "description_hash": "26397c39",
      "is_external": false
    },
    "120": {
      "confidence": "high",
      "reasoning": "LIN++Z67 means elements[1][0]=='Z67'. Check if any LIN segment has Erforderliches Messprodukt für Werte nach Typ 2 aus Backend code Z67.",
      "description_hash": "60c87379",
      "is_external": false
    },
    "960": {
      "confidence": "high",
      "reasoning": "Format: Netzlokations-ID — German Netzlokations-IDs follow the same 11-digit Luhn check format as Marktlokations-IDs. Extract from LOC+Z18 elements[1][0] (C517.D3225). validate_malo_id validates the 11-digit Luhn format shared by all location ID types.",
      "description_hash": "0ce0bd80",
      "is_external": false
    },
    "106": {
      "confidence": "high",
      "reasoning": "IMD++Z60 means elements[0] is empty and elements[1][0]=Z60 (Abbestellung Messprodukt mit Zählzeitdefinition des LF). Check absence using lacks_qualifier at element index 1.",
      "description_hash": "149fa5bb",
      "is_external": false
    },
    "2050": {
      "confidence": "medium",
      "reasoning": "Per message, SG29 (identified by its entry segment LIN) must appear exactly once. We count all LIN segments in the message and check for exactly one occurrence.",
      "description_hash": "fa58c7ae",
      "is_external": false
    },
    "28": {
      "confidence": "high",
      "reasoning": "Whether the MP-ID in NAD+MR belongs to the Strom (electricity) sector cannot be determined from the EDIFACT message structure alone — it requires a market participant registry lookup. External condition.",
      "description_hash": "bcba1526",
      "is_external": true
    },
    "79": {
      "confidence": "medium",
      "reasoning": "Checks if any SG29 instance contains both LIN with Z54 at elements[1][0] and PIA with product code 9991000000078 at elements[1][0]. The 'another SG29' nuance is approximated as 'any SG29' since we have no current-group context.",
      "description_hash": "29f0d4ea",
      "is_external": false
    },
    "101": {
      "confidence": "medium",
      "reasoning": "Checking whether the NAD+MR recipient has role MSB in Sparte Gas requires external business context about market participant roles — not determinable from message content alone.",
      "description_hash": "880d4b68",
      "is_external": true
    },
    "180": {
      "confidence": "low",
      "reasoning": "Condition references Kapitel 6.2 external product code list 'Produkte zur Bestellung einer Änderung von Abrechnungsdaten' — membership in this external code list with column-specific conditional logic cannot be determined from the EDIFACT message alone.",
      "description_hash": "4128fb0f",
      "is_external": true
    },
    "134": {
      "confidence": "medium",
      "reasoning": "RFF+Z42 in SG1 (elements[0][0]==\"Z42\") references the original order response position. Presence of this segment in the current message indicates the reclaim scenario. The 'reklamiert werden soll' clause is implied by the reference existing.",
      "description_hash": "f5d95e26",
      "is_external": false
    },
    "914": {
      "confidence": "high",
      "reasoning": "Format condition requiring numeric value > 0. In ORDERS, QTY element 0 component 1 holds the quantity value. Uses validate_numeric helper with '>' operator.",
      "description_hash": "e108ecf6",
      "is_external": false
    },
    "171": {
      "confidence": "high",
      "reasoning": "In same SG29: IMD with elements[2][0]=\"Z64\" (IMD+++Z64)",
      "description_hash": "c3307534",
      "is_external": false
    },
    "122": {
      "confidence": "high",
      "reasoning": "Absence check: condition is True when no RFF segment with qualifier Z41 (Referenznummer des Vorgangs der Anmeldung nach WiM) is present. RFF qualifier is at elements[0][0].",
      "description_hash": "78961ba8",
      "is_external": false
    },
    "950": {
      "confidence": "high",
      "reasoning": "Format: Marktlokations-ID — 11-digit value with Luhn check digit. Extract from LOC+Z16 elements[1][0] (C517.D3225). validate_malo_id checks the 11-digit Luhn format.",
      "description_hash": "a9ddfaec",
      "is_external": false
    },
    "154": {
      "confidence": "high",
      "reasoning": "Checks if the used product code belongs to the 'Netzlokation' level in the Kapitel 7 product configuration code list. Requires external code list lookup.",
      "description_hash": "a4ca37cf",
      "is_external": true
    },
    "97": {
      "confidence": "high",
      "reasoning": "True when any FTX segment has qualifier Z10 at elements[0][0].",
      "description_hash": "df5bba98",
      "is_external": false
    },
    "45": {
      "confidence": "high",
      "reasoning": "Whether the MP-ID in NAD+MS has the market role MSB (Messstellenbetreiber) cannot be determined from the EDIFACT message — the NAD segment only carries the identifier, not the role. Requires external market participant registry lookup. External condition.",
      "description_hash": "534f2999",
      "is_external": true
    },
    "160": {
      "confidence": "high",
      "reasoning": "References Kapitel 6.2 code list — requires cross-referencing the PIA+5 product code against the same row's 'Code der Produkteigenschaft (Wertebereich)' column in the external configuration table. Cannot be determined from the EDIFACT message alone.",
      "description_hash": "8a5bf912",
      "is_external": true
    },
    "922": {
      "confidence": "medium",
      "reasoning": "TR-ID (Transaktionsreferenz-ID) format. In ORDERS the transaction reference ID appears in BGM C106. The exact segment context depends on the AHB field definition — implemented as max-length-35 check on BGM, consistent with EDIFACT AN..35 data element constraints. Medium confidence because the target segment may differ by AHB row.",
      "description_hash": "589886f8",
      "is_external": false
    },
    "95": {
      "confidence": "high",
      "reasoning": "Code list membership check against chapter 2.1 of Codeliste der Konfigurationen ('Standard-Messprodukte der Marktlokation'). External code list not derivable from EDIFACT message content alone.",
      "description_hash": "aedc63cc",
      "is_external": true
    },
    "568": {
      "confidence": "high",
      "reasoning": "Hinweis: informational annotation, always applies unconditionally",
      "description_hash": "ab1d1f4a",
      "is_external": false
    },
    "91": {
      "confidence": "low",
      "reasoning": "Condition states 'Wenn in diesem Datenelement kein anderes Paket zur Möglichkeit der Angabe von mindestens einem anderen Code führt' — i.e., True when no other package enables specifying at least one other code in this data element. This is abstract business logic about the package configuration context that cannot be derived from the raw EDIFACT segments. It requires knowledge of which product packages are selected and their capabilities.",
      "description_hash": "54159ae6",
      "is_external": true
    },
    "77": {
      "confidence": "medium",
      "reasoning": "Checks if a CCI segment in the same SG29 group has DE7059 == 'Z39' (Code der Zählzeitdefinition). DE7059 is the class/type code at elements[0][0] in CCI. Group-scoped to SG29 with message-wide fallback.",
      "description_hash": "80dbca9a",
      "is_external": false
    },
    "148": {
      "confidence": "high",
      "reasoning": "COM segment DE3155 (channel code) is at elements[0][1]. Checks if any COM has one of TE (telephone), FX (fax), AJ (telex), or AL (electronic mail alt.) as channel code.",
      "description_hash": "d9351e4d",
      "is_external": false
    },
    "24": {
      "confidence": "high",
      "reasoning": "IMD++Z35: same pattern as conditions 18/19 — Z35 is at elements[1][0] (DE7081 in C272). Schema confirms Z35 is a valid Produkt/Leistung code.",
      "description_hash": "a54c2165",
      "is_external": false
    },
    "930": {
      "confidence": "high",
      "reasoning": "Standard max-2-decimal-places format check on QTY quantity value (C186 component D6060 at elements[0][1]). Uses validate_max_decimal_places helper directly.",
      "description_hash": "30e8c861",
      "is_external": false
    },
    "2097": {
      "confidence": "high",
      "reasoning": "This is a Hinweis-style completeness annotation: for every Tranche ID in SG3 RFF+Z20, at least one SG29 must exist. While SG29 contains SG34 RFF+Z20 which could in principle be cross-referenced, the condition describes a structural pairing requirement (cardinality guarantee) rather than a boolean predicate about message state. It documents expected message completeness. Always returns True.",
      "description_hash": "3270a39a",
      "is_external": false
    },
    "152": {
      "confidence": "low",
      "reasoning": "Checks whether the PIA+5 DE7140 product code in SG29 LIN (Erforderliches Produkt der Messlokation) is listed in the Kapitel 7 code list 'Produkte zur Bestellung einer Änderung an einer Lokation' with Bezeichnung 'weitere Energieflussrichtung'. The product code value is extractable from PIA elements[1][0] (where elements[1][1]=='Z11'), but membership in this specific code list column value requires external code list lookup.",
      "description_hash": "ce02e0c2",
      "is_external": true
    },
    "164": {
      "confidence": "high",
      "reasoning": "Whether the configuration of the tranche referenced by SG34 RFF+Z20 remains unchanged is a business state condition that cannot be determined from the EDIFACT message content alone. It requires knowledge of the current configuration state of the tranche in the system, which is external context.",
      "description_hash": "006b3d17",
      "is_external": true
    },
    "161": {
      "confidence": "high",
      "reasoning": "Checks that in the same SG29 LIN instance (Erforderliches Produkt Abrechnungsdaten), PIA+5 is present but CAV+ZH9 (Code der Produkteigenschaft, elements[0][0]=ZH9) is absent. Directly implementable via any_group_has_qualifier_without with group path SG4.SG29.",
      "description_hash": "3c64705c",
      "is_external": false
    },
    "85": {
      "confidence": "medium",
      "reasoning": "Group-scoped co-occurrence in SG29: LIN with Z54 at elements[1][0] AND PIA with product code 9991000000086 (Wirkarbeit höchste 1/4 Stunde im Monat) at elements[1][0].",
      "description_hash": "d2edf5e9",
      "is_external": false
    },
    "136": {
      "confidence": "high",
      "reasoning": "LIN++Z65 parses to elements[1][0]='Z65'. lacks_qualifier checks absence of the Leistungskurvendefinitionen product line.",
      "description_hash": "cf55c2fa",
      "is_external": false
    },
    "2061": {
      "confidence": "high",
      "reasoning": "Per message, SG29 with LIN++Z65 (Erforderliches Produkt Leistungskurvendefinitionen) may appear at most once. The notation LIN++Z65 means elements[0] is empty (position number) and elements[1][0]==\"Z65\" is DE1229 (Handlung Code). We count matching LIN segments and verify count <= 1.",
      "description_hash": "4c55aa88",
      "is_external": false
    },
    "26": {
      "confidence": "medium",
      "reasoning": "Whether the NAD+MS market participant holds the role ÜNB (Übertragungsnetzbetreiber) cannot be determined from the EDIFACT message content alone. The role is a business context attribute of the MP-ID that requires an external master data lookup (e.g. Marktstammdatenregister or internal role registry). Marked external with name 'sender_is_uenb'.",
      "description_hash": "e82547e6",
      "is_external": true
    },
    "102": {
      "confidence": "high",
      "reasoning": "CCI+++Z25 means elements[0] and [1] are empty, elements[2][0]=Z25 (Geräteart Wandler). Check if any SG29 group instance contains a CCI with this qualifier at element index 2.",
      "description_hash": "54823921",
      "is_external": false
    },
    "532": {
      "confidence": "high",
      "reasoning": "Starts with 'Hinweis:' — informational annotation describing the origin of the BGM document number from a QUOTES message. Not a boolean predicate. Always returns True.",
      "description_hash": "811b7088",
      "is_external": false
    },
    "156": {
      "confidence": "high",
      "reasoning": "Checks if the used product code is marked with 'X' in the 'NB' (Netzbetreiber) column of the Kapitel 7 code list — i.e., orderable towards MSB by the NB market role. Requires external code list lookup combining product code identity with market role column data.",
      "description_hash": "13eb1c22",
      "is_external": true
    },
    "130": {
      "confidence": "high",
      "reasoning": "Checks whether the value in LOC+172 DE3225 (elements[1][0]) is a valid Marktlokations-ID (11 digits with Luhn check digit). Uses validate_malo_id format helper. Returns Unknown if no LOC+172 segment exists, False if value is empty or fails Luhn check, True if it is a valid MaLo-ID.",
      "description_hash": "a1d8d059",
      "is_external": false
    },
    "492": {
      "confidence": "medium",
      "reasoning": "Whether the MP-ID in NAD+MR belongs to the Strom (electricity) sector cannot be determined from the EDIFACT message alone — it requires a market participant registry lookup.",
      "description_hash": "bd78e2d8",
      "is_external": true
    },
    "2099": {
      "confidence": "medium",
      "reasoning": "Simple cardinality check: SG2 must appear exactly once (genau einmal). Implemented using count_in_group on NAD (the entry segment of SG2) within SG29. Returns Unknown when no SG2 is found at all (not yet present), False when count > 1, True when exactly 1. Medium confidence due to unconfirmed group path without the full EDIFACT Segment Structure Reference for this PID.",
      "description_hash": "e5beb403",
      "is_external": false
    },
    "572": {
      "confidence": "high",
      "reasoning": "Hinweis informational note, always returns True.",
      "description_hash": "e945c47b",
      "is_external": false
    },
    "2098": {
      "confidence": "medium",
      "reasoning": "Cardinality rule: SG2 repetition count must equal the number of SG3 tranche references. Implemented by comparing count_in_group for both groups within SG29. Medium confidence because exact group paths and SG3 RFF qualifier for 'Tranche ID' are not confirmed without the full MIG segment structure reference — the paths &[\"SG29\", \"SG2\"] and &[\"SG29\", \"SG3\"] are based on standard ORDERS tx_group conventions from project memory.",
      "description_hash": "4089f48b",
      "is_external": false
    },
    "569": {
      "confidence": "high",
      "reasoning": "Hinweis informational note, always returns True.",
      "description_hash": "e6532bbc",
      "is_external": false
    },
    "56": {
      "confidence": "high",
      "reasoning": "Simple absence check: DTM segment where elements[0][0] == '203' (Ausführungsdatum qualifier) is not present.",
      "description_hash": "4554ba2c",
      "is_external": false
    },
    "174": {
      "confidence": "high",
      "reasoning": "IMD with elements[1][0]=\"Z67\" present (message-wide)",
      "description_hash": "b2144465",
      "is_external": false
    },
    "562": {
      "confidence": "high",
      "reasoning": "Hinweis condition — informational annotation about field origin (IFTSTA response document number), always applies unconditionally.",
      "description_hash": "5d5c40e1",
      "is_external": false
    },
    "123": {
      "confidence": "high",
      "reasoning": "Absence check: condition is True when no DTM segment with qualifier 203 (Ausführungsdatum) exists. DTM qualifier is at elements[0][0].",
      "description_hash": "4554ba2c",
      "is_external": false
    },
    "27": {
      "confidence": "medium",
      "reasoning": "Whether the NAD+MR market participant holds the role MSB (Messstellenbetreiber) cannot be determined from the EDIFACT message content alone. The role is a business context attribute of the MP-ID requiring external master data. Marked external with name 'recipient_is_msb'.",
      "description_hash": "801ccc8e",
      "is_external": true
    },
    "571": {
      "confidence": "high",
      "reasoning": "Hinweis informational note, always returns True.",
      "description_hash": "d998a7a4",
      "is_external": false
    },
    "2062": {
      "confidence": "medium",
      "reasoning": "Count LIN segments where elements[1][0]==\"Z66\" (LIN++Z66, ad-hoc Steuerkanal). Condition is True when at most one such SG29 line item is present per message.",
      "description_hash": "d7463532",
      "is_external": false
    },
    "82": {
      "confidence": "medium",
      "reasoning": "Requires: (1) finding ANOTHER SG29 (not the current one) where LIN DE1229 = Z54, (2) that SG29 also has PIA+5, and (3) PIA DE7140 is from 'Codeliste der Konfigurationen, Kapitel 2.1.1 – Standard-Messprodukt der Marktlokation mit der Wahlmöglichkeit der Zuordnung einer Zählzeit'. The code list membership is external and cannot be determined from the EDIFACT message alone.",
      "description_hash": "757a37da",
      "is_external": true
    },
    "19": {
      "confidence": "high",
      "reasoning": "IMD++Z12: same pattern as condition 18 — Z12 is at elements[1][0] (DE7081 in C272). Schema confirms Z12 is a valid code.",
      "description_hash": "6a8a9f19",
      "is_external": false
    },
    "157": {
      "confidence": "high",
      "reasoning": "Checks if the used product code is marked with 'X' in the 'LF' (Lieferant) column of the Kapitel 7 code list — i.e., orderable towards MSB by the LF market role. Requires external code list lookup combining product code identity with market role column data.",
      "description_hash": "bb5085d1",
      "is_external": true
    },
    "137": {
      "confidence": "high",
      "reasoning": "LIN++Z66 parses to elements[1][0]='Z66'. lacks_qualifier checks absence of the Ad-hoc-Steuerkanal product line.",
      "description_hash": "f4271ac6",
      "is_external": false
    },
    "935": {
      "confidence": "high",
      "reasoning": "Format condition: HHMM must equal 0500. Uses validate_hhmm_equals helper on the DTM value element.",
      "description_hash": "192bd97e",
      "is_external": false
    },
    "521": {
      "confidence": "high",
      "reasoning": "Starts with 'Hinweis:' — this is an informational annotation documenting that the Marktlokations-ID is used here. Not a boolean predicate. Always returns True unconditionally.",
      "description_hash": "9727b89c",
      "is_external": false
    },
    "93": {
      "confidence": "high",
      "reasoning": "True when no LIN segment in the message has Z16 at elements[1][0] (Erforderliches Produkt der Tranche). LIN DE1229 is at elements[1].",
      "description_hash": "4335749d",
      "is_external": false
    },
    "51": {
      "confidence": "high",
      "reasoning": "BGM+Z48 means the BGM segment has document name code Z48 at elements[0][0] (C002.DE1001). The schema shows +28 more codes beyond those listed, so Z48 is a valid BGM document type code.",
      "description_hash": "eb03162a",
      "is_external": false
    },
    "142": {
      "confidence": "low",
      "reasoning": "Checks whether the PIA+5 DE7140 product code (for Konfigurationserlaubnis für Werte nach Typ 2 aus SMGW in the same SG29) is flagged with 'Bei Schwellwertunter- / -überschreitung' in the 'Auslöser' column of the Kapitel 4.4 code list. The extracted product code value is available in the message (PIA elements[1][0] with elements[1][1]=='Z11'), but determining whether it is marked with that specific Auslöser label requires external code list lookup — cannot be determined from message content alone.",
      "description_hash": "ea04d089",
      "is_external": true
    },
    "140": {
      "confidence": "high",
      "reasoning": "Code list chapter membership check (Kapitel 2.4 of Codeliste der Konfigurationen). Per instructions, product code list membership checks referencing chapter numbers are always external — cannot be evaluated from message structure alone.",
      "description_hash": "67385860",
      "is_external": true
    },
    "61": {
      "confidence": "high",
      "reasoning": "Cannot determine commodity sector (Gas vs Strom) of the MP-ID from the EDIFACT message alone. This is a business context / master data lookup.",
      "description_hash": "43bf0d05",
      "is_external": true
    },
    "178": {
      "confidence": "low",
      "reasoning": "The condition 'Wenn vom NB eine Abtretungserklärung vom Kunden gewünscht ist' depends entirely on the NB's external business preference for requesting an assignment declaration. This is a runtime flag in the business process, not observable in any EDIFACT segment.",
      "description_hash": "539b0fa7",
      "is_external": true
    },
    "539": {
      "confidence": "high",
      "reasoning": "Hinweis: informational annotation describing allowed codes, always applies unconditionally.",
      "description_hash": "fc92ece2",
      "is_external": false
    },
    "167": {
      "confidence": "high",
      "reasoning": "NAD+DP present AND RFF+Z20 present (both message-wide)",
      "description_hash": "2e0ef93d",
      "is_external": false
    },
    "76": {
      "confidence": "high",
      "reasoning": "This condition checks if the PIA+5 DE7140 value in the SG29 with LIN+Z54 belongs to a specific named code list (Kapitel 2.1.1 'Standard-Messprodukt der Marktlokation mit der Wahlmöglichkeit der Zuordnung einer Zählzeit'). Code list membership requires external reference data that cannot be derived from the EDIFACT message structure alone. External condition.",
      "description_hash": "30773f30",
      "is_external": true
    },
    "576": {
      "confidence": "high",
      "reasoning": "Hinweis: informational note describing next-possible-date semantics, always applies unconditionally.",
      "description_hash": "435f6fd5",
      "is_external": false
    },
    "105": {
      "confidence": "high",
      "reasoning": "Business context condition: 'Wenn die bisherige Konfiguration mit Zählzeiten des LF vom LF beendet werden soll' — whether the previous configuration with LF switching times is to be terminated by the LF. This is a runtime business intent that cannot be determined from the EDIFACT message structure alone.",
      "description_hash": "8494bd14",
      "is_external": true
    },
    "490": {
      "confidence": "high",
      "reasoning": "Check if the DTM value at position CCYYMMDDHHMM falls within German summer time (MESZ) as per Kapitel 3.5 table. Uses the is_mesz_utc helper which implements EU DST rules.",
      "description_hash": "cb594882",
      "is_external": false
    },
    "132": {
      "confidence": "high",
      "reasoning": "Whether the ID in LOC+172 DE3225 belongs to a Netzlokation cannot be determined from message structure alone — requires external registry lookup to identify the ID type.",
      "description_hash": "41c4647d",
      "is_external": true
    },
    "525": {
      "confidence": "high",
      "reasoning": "Hinweis condition — informational annotation about the value origin from BGM DE1004 of the MSCONS message, always applies unconditionally.",
      "description_hash": "a846d22a",
      "is_external": false
    },
    "139": {
      "confidence": "high",
      "reasoning": "LIN++Z68 parses to elements[1][0]='Z68'. lacks_qualifier checks absence of the Konfigurationserlaubnis für Werte nach Typ 2 aus SMGW product line.",
      "description_hash": "7c74a44d",
      "is_external": false
    },
    "118": {
      "confidence": "high",
      "reasoning": "LIN++Z65 means elements[1][0]=='Z65'. Check if any LIN segment has Erforderliches Produkt Leistungskurvendefinitionen code Z65.",
      "description_hash": "d996cb31",
      "is_external": false
    },
    "113": {
      "confidence": "high",
      "reasoning": "LIN DE1229 is at elements[1][0]. Check if any LIN segment has action code Z42 (Zählzeitdefinition) — message-wide presence check.",
      "description_hash": "8ae14796",
      "is_external": false
    },
    "83": {
      "confidence": "medium",
      "reasoning": "Logical negation of condition [82]: 'wenn KEINE andere SG29 mit Z54 ... vorhanden ist'. Implemented by inverting the external result for [82]. Returns Unknown when the underlying external condition is Unknown (e.g., code list not available).",
      "description_hash": "3b83e8aa",
      "is_external": false
    },
    "501": {
      "confidence": "high",
      "reasoning": "This is a 'Hinweis' (informational note) — 'Zählpunkt der DZR'. It provides documentation context about the field, not an evaluatable boolean condition.",
      "description_hash": "ec6d0530",
      "is_external": false
    },
    "62": {
      "confidence": "high",
      "reasoning": "Market participant role (MSB = Messstellenbetreiber) cannot be determined from the EDIFACT message content alone — requires external master data.",
      "description_hash": "bf415ebf",
      "is_external": true
    },
    "63": {
      "confidence": "high",
      "reasoning": "Market participant role (NB = Netzbetreiber) cannot be determined from the EDIFACT message content alone — requires external master data.",
      "description_hash": "d56a9524",
      "is_external": true
    },
    "127": {
      "confidence": "low",
      "reasoning": "Condition validates that only configuration products from 'Codeliste der Konfigurationen Kapitel 4.3 Konfigurationsprodukte Ad-Hoc-Steuerkanal' are used. Same pattern as condition 126 — requires membership check against an external code list (Kapitel 4.3) that cannot be inlined.",
      "description_hash": "87915e25",
      "is_external": true
    },
    "128": {
      "confidence": "low",
      "reasoning": "Condition validates that only measurement products from 'Codeliste der Konfigurationen Kapitel 4.5 Messprodukte für Werte nach Typ 2 aus Backend für LF und NB' are used. Requires external code list membership check (Kapitel 4.5) — cannot be determined from the EDIFACT message content alone.",
      "description_hash": "6bdbb7fc",
      "is_external": true
    },
    "107": {
      "confidence": "high",
      "reasoning": "IMD++Z57 means elements[0] is empty and elements[1][0]=Z57 (Abbestellung Zählzeitdefinition). Check absence using lacks_qualifier at element index 1.",
      "description_hash": "99154b92",
      "is_external": false
    },
    "561": {
      "confidence": "high",
      "reasoning": "Hinweis condition — informational annotation about field origin, always applies unconditionally.",
      "description_hash": "8b8ede09",
      "is_external": false
    },
    "2001": {
      "confidence": "low",
      "reasoning": "Cardinality rule requiring SG29 to repeat once per Tranche starting from DTM+203 (Ausführungsdatum) for the Marktlokation named in SG2. The number of Tranchen is external business context (master data) not derivable from the EDIFACT message itself.",
      "description_hash": "7958b8f7",
      "is_external": true
    },
    "570": {
      "confidence": "high",
      "reasoning": "Hinweis informational note, always returns True.",
      "description_hash": "dddfcb8b",
      "is_external": false
    },
    "2005": {
      "confidence": "medium",
      "reasoning": "Per SG29 LIN, RFF+Z09 (Gerätenummer) must appear exactly once. We check that there is exactly one RFF segment with qualifier Z09 in the message context. This is a cardinality constraint evaluated at message level via segment counting.",
      "description_hash": "7eaa890a",
      "is_external": false
    },
    "173": {
      "confidence": "high",
      "reasoning": "IMD with elements[1][0]=\"Z66\" present (message-wide)",
      "description_hash": "ea9084ed",
      "is_external": false
    },
    "503": {
      "confidence": "high",
      "reasoning": "This is a 'Hinweis' (informational note) about specifying a technical contact for device takeover. It provides documentation context, not an evaluatable boolean condition.",
      "description_hash": "c6b98d25",
      "is_external": false
    },
    "100": {
      "confidence": "high",
      "reasoning": "Code list membership check against chapter 2.3 of Codeliste der Konfigurationen ('Standard-Messprodukte der Messlokation'). External code list not derivable from EDIFACT message content alone.",
      "description_hash": "703bf91a",
      "is_external": true
    },
    "550": {
      "confidence": "high",
      "reasoning": "Hinweis condition — informational annotation about the specific case of missing meter reading due to scheduled reading cycle, always applies unconditionally.",
      "description_hash": "6208868d",
      "is_external": false
    },
    "109": {
      "confidence": "high",
      "reasoning": "LOC+172 means elements[0][0]=172 (Meldepunkt). Message-wide absence check using lacks_qualifier at element index 0.",
      "description_hash": "21ae79c7",
      "is_external": false
    },
    "57": {
      "confidence": "medium",
      "reasoning": "Checks if any NAD segment in the message lacks DE3124 (C058 at elements[2][0]). 'Im selben SG2' requires group context; falls back to message-wide check. DE3124 is the first component of C058 (Zeile für Name und Anschrift / Zusatzinfo).",
      "description_hash": "ba1bd1cc",
      "is_external": false
    },
    "2066": {
      "confidence": "high",
      "reasoning": "This condition documents the required repetition count for RFF+Z37 in SG3 (one per Technische Ressource ID being assigned to the Steuerbare Ressource at the Meldepunkt LOC+172). It is an informational cardinality annotation, not a boolean predicate. → Hinweis pattern.",
      "description_hash": "cf05c145",
      "is_external": false
    },
    "2096": {
      "confidence": "high",
      "reasoning": "This is a Hinweis-style cardinality annotation: SG3 RFF+Z20 must repeat once per active Tranche for the referenced Marktlokation starting at DTM+203. The actual number of Tranchen is external business context, not derivable from this message. No boolean predicate present. Always returns True.",
      "description_hash": "778707e0",
      "is_external": false
    },
    "166": {
      "confidence": "low",
      "reasoning": "The condition is purely about business intent: whether the current process is about setting up configurations due to an LF being assigned to a tranche. This cannot be derived from EDIFACT segment content — it is runtime business context that the calling system must provide.",
      "description_hash": "bc91af22",
      "is_external": true
    },
    "2006": {
      "confidence": "medium",
      "reasoning": "Per SG29 LIN, RFF+Z09 (Gerätenummer) may appear up to three times. We verify that at most 3 RFF segments with qualifier Z09 exist in the message context.",
      "description_hash": "6eac3e5f",
      "is_external": false
    },
    "94": {
      "confidence": "high",
      "reasoning": "True when no LIN segment in the message has Z54 at elements[1][0] (Erforderliches Produkt der Marktlokation). LIN DE1229 is at elements[1].",
      "description_hash": "501c6e36",
      "is_external": false
    },
    "494": {
      "confidence": "medium",
      "reasoning": "States that the date in this DE must be the document creation time or earlier, i.e. <= DTM+137 Nachrichtendatum. Applied to DTM+203 (Ausführungsdatum) as the most logical target in ORDERS. Lexicographic string comparison is valid for CCYYMMDDHHMM (format 303) values since they are zero-padded fixed-width.",
      "description_hash": "785470ce",
      "is_external": false
    },
    "558": {
      "confidence": "high",
      "reasoning": "Hinweis condition — informational annotation about field origin, always applies unconditionally.",
      "description_hash": "71416bea",
      "is_external": false
    },
    "955": {
      "confidence": "medium",
      "reasoning": "Format: Möglicher Wert: <100 — numeric value must be less than 100. Most likely applies to a QTY quantity value (C186.D6060, elements[0][1]). validate_numeric with \"<\" and threshold 100.0 covers this. Medium confidence because the exact segment context (QTY vs PRI vs PCT) is not specified — QTY is the most common numeric value carrier in ORDERS.",
      "description_hash": "f93fa71b",
      "is_external": false
    },
    "533": {
      "confidence": "high",
      "reasoning": "Starts with 'Hinweis:' — informational annotation indicating the date was specified by a bailiff (Gerichtsvollzieher). Not a boolean predicate. Always returns True.",
      "description_hash": "7cc106f7",
      "is_external": false
    },
    "2002": {
      "confidence": "medium",
      "reasoning": "Must be specified at least twice. Counts DTM+203 (Ausführungsdatum, qualifier at elements[0][0]) occurrences as a proxy for SG29 group instance count since each SG29 contains exactly one DTM+203. Condition is True when count >= 2.",
      "description_hash": "1f56ab0a",
      "is_external": false
    },
    "557": {
      "confidence": "high",
      "reasoning": "Hinweis condition — informational annotation about scope of Messprodukte listing. Always returns True.",
      "description_hash": "e60c4126",
      "is_external": false
    },
    "84": {
      "confidence": "medium",
      "reasoning": "Checks for IMD segment where elements[1][0]='Z14' (item characteristic) and elements[2][0]='Z07' (item description code). IMD++Z14+Z07 maps directly to these positions.",
      "description_hash": "c5e40355",
      "is_external": false
    },
    "2004": {
      "confidence": "high",
      "reasoning": "This condition describes how many times SG29 must repeat (once per device of the affected device type being replaced in an MSB change). It is an informational cardinality annotation, not a boolean predicate. It always applies unconditionally → Hinweis pattern.",
      "description_hash": "4fcd7467",
      "is_external": false
    },
    "931": {
      "confidence": "high",
      "reasoning": "Timezone validation — DTM value in format 303 embeds timezone suffix (ZZZ). validate_timezone_utc checks that the trailing timezone portion equals '+00'. Applied to the first DTM segment found; the AHB applies this condition to specific DTM qualifiers in context.",
      "description_hash": "825c510c",
      "is_external": false
    },
    "162": {
      "confidence": "high",
      "reasoning": "References Kapitel 6.2 code list — requires cross-referencing the PIA+5 product code against the same row's 'Wertedetails für Position' column in the external configuration table. Cannot be determined from the EDIFACT message alone.",
      "description_hash": "01ba92f1",
      "is_external": true
    },
    "108": {
      "confidence": "high",
      "reasoning": "RFF+AGK means elements[0][0]=AGK (Konfigurations-ID). Message-wide absence check using lacks_qualifier at element index 0.",
      "description_hash": "ba833a32",
      "is_external": false
    },
    "507": {
      "confidence": "high",
      "reasoning": "This is a 'Hinweis' (informational note) about transmitting all OBIS codes after a Messlokation change, including pre-existing ones, via LIN repetition. It provides documentation context, not an evaluatable boolean condition.",
      "description_hash": "623f06dc",
      "is_external": false
    },
    "103": {
      "confidence": "high",
      "reasoning": "Negation of condition 102 — CCI+++Z25 (Geräteart Wandler) is absent from the SG29 group. Inverts the group-scoped qualifier check result.",
      "description_hash": "dff65310",
      "is_external": false
    },
    "545": {
      "confidence": "high",
      "reasoning": "Hinweis: informational annotation describing which measurement products are to be listed, always applies unconditionally.",
      "description_hash": "b06e967c",
      "is_external": false
    },
    "540": {
      "confidence": "high",
      "reasoning": "Hinweis: informational annotation describing allowed codes, always applies unconditionally.",
      "description_hash": "0ee4c3be",
      "is_external": false
    },
    "60": {
      "confidence": "high",
      "reasoning": "Cannot determine commodity sector (Gas vs Strom) of the MP-ID from the EDIFACT message alone. This is a business context / master data lookup.",
      "description_hash": "6eb01bf6",
      "is_external": true
    },
    "65": {
      "confidence": "high",
      "reasoning": "Simple existence check: FTX segment with qualifier Z08 at elements[0][0] is present.",
      "description_hash": "8953b487",
      "is_external": false
    },
    "543": {
      "confidence": "high",
      "reasoning": "Hinweis: informational annotation describing the origin of the BGM document number value, always applies unconditionally.",
      "description_hash": "de6ce623",
      "is_external": false
    },
    "2094": {
      "confidence": "high",
      "reasoning": "This is a Hinweis-style cardinality annotation: SG29 must repeat once per ordered position from the offer referenced in SG1 RFF+AAG. The offer document is external — the count cannot be verified from the message itself. It documents structural repetition expectations without a boolean predicate. Always returns True.",
      "description_hash": "80c4c867",
      "is_external": false
    },
    "70": {
      "confidence": "high",
      "reasoning": "Simple absence check: NAD+Z03 (Messlokationsadresse) not present in message. elements[0][0] == 'Z03'.",
      "description_hash": "90cb127e",
      "is_external": false
    },
    "967": {
      "confidence": "low",
      "reasoning": "Format condition requires validating an X.509 certificate body per BSI TR-03109-4. Certificate structural validation (ASN.1/DER encoding, BSI profile compliance) is not supported by the available format validation helpers and cannot be meaningfully checked against raw EDIFACT segment values.",
      "description_hash": "a58c2a1e",
      "is_external": false
    },
    "549": {
      "confidence": "high",
      "reasoning": "Hinweis condition — informational annotation about when DTM+7 vs DTM+163/DTM+164 applies for meter reading complaints, always applies unconditionally.",
      "description_hash": "1edef877",
      "is_external": false
    },
    "939": {
      "confidence": "high",
      "reasoning": "Format condition: string must contain @ and . characters — standard email validation. COM segment elements[0][0] holds the communication value. Uses validate_email helper which checks for both @ and . presence.",
      "description_hash": "05a09b9a",
      "is_external": false
    },
    "179": {
      "confidence": "low",
      "reasoning": "The condition requires checking (a) that PIA+5 DE7140 within the same SG29 contains the specific product code for 'Empfänger der Vergütung zur Einspeisung' from codelist chapter 6.2, and (b) that CAV+ZH9 DE7110 in SG30 contains the code for 'Lieferant'. The structural access is available via any_group_has_co_occurrence and navigator API, but the actual codelist values for these two fields are defined in chapter 6.2 of the AHB document and not provided in the segment schema reference. Without those concrete code values the check cannot be reliably implemented.",
      "description_hash": "795c4114",
      "is_external": false
    },
    "495": {
      "confidence": "medium",
      "reasoning": "Explicitly requires the subject timestamp to be <= DE2380 of DTM+137 (Nachrichtendatum). Notation resolved: DTM+137 elements[0][1] is DE2380 per the MIG segment structure reference. Applied to DTM+203 (Ausführungsdatum) as the primary date field requiring this constraint in ORDERS. String comparison is valid for fixed-width CCYYMMDDHHMM format 303.",
      "description_hash": "15943b5e",
      "is_external": false
    },
    "551": {
      "confidence": "high",
      "reasoning": "Hinweis condition — informational annotation about how many times SG29 must be repeated and what it means for meter configuration, always applies unconditionally.",
      "description_hash": "9c3565ec",
      "is_external": false
    },
    "552": {
      "confidence": "high",
      "reasoning": "Hinweis condition — informational annotation about usage of Netzlokation ID. Always returns True.",
      "description_hash": "9592f83e",
      "is_external": false
    },
    "33": {
      "confidence": "high",
      "reasoning": "IMD+Z01 refers to the Abonnement IMD where DE7081 (elements[1][0]) has code Z01. The schema shows Z01/Z02/Z03 are valid codes in elements[1][0] (C272.DE7081). has_qualifier checks elements[1][0]==\"Z01\".",
      "description_hash": "fe94e54c",
      "is_external": false
    },
    "23": {
      "confidence": "high",
      "reasoning": "Market participant role NB (Netzbetreiber) for NAD+MR (recipient) cannot be determined from the EDIFACT message alone — requires external role registry or business context.",
      "description_hash": "fd31775c",
      "is_external": true
    },
    "536": {
      "confidence": "high",
      "reasoning": "Starts with 'Hinweis:' — informational annotation describing the origin of the process number from UTILTS IDE DE7402 with BGM+Z59. Not a boolean predicate. Always returns True.",
      "description_hash": "0780cd24",
      "is_external": false
    },
    "34": {
      "confidence": "high",
      "reasoning": "IMD+Z02 refers to the Abonnement IMD where DE7081 (elements[1][0]) has code Z02. Same structure as condition 33.",
      "description_hash": "b9fd90d6",
      "is_external": false
    },
    "962": {
      "confidence": "medium",
      "reasoning": "Format: max 6 integer digits (Vorkommastellen). Applied to QTY element[0][1] as the most common numeric data field in ORDERS requiring integer-part validation. Uses validate_max_integer_digits helper. Confidence medium because the target segment is inferred from context rather than explicitly stated.",
      "description_hash": "36f7f4e8",
      "is_external": false
    },
    "78": {
      "confidence": "medium",
      "reasoning": "Requires checking PIA DE7140 against an external code list from 'Codeliste der Konfigurationen, Kapitel 2 – Codeliste der Standard-Messprodukt Strom für Werte nach Typ 1' filtered to those with the Werteigenschaft 'Blindarbeit'. The structural check (LIN Z55 + PIA+5 in same SG29) is possible via navigator, but the code list membership for 'Blindarbeit' products is an external reference that cannot be determined from the EDIFACT message alone.",
      "description_hash": "53291a42",
      "is_external": true
    },
    "903": {
      "confidence": "high",
      "reasoning": "Format constraint 'Möglicher Wert: 1' means the only permitted value is 1. This is a fixed-value format annotation — always True (the value is always 1 when present). No dynamic evaluation needed.",
      "description_hash": "ef3b7862",
      "is_external": false
    },
    "138": {
      "confidence": "high",
      "reasoning": "LIN++Z67 parses to elements[1][0]='Z67'. lacks_qualifier checks absence of the Messprodukt für Werte nach Typ 2 aus Backend product line.",
      "description_hash": "4bc6f60e",
      "is_external": false
    },
    "124": {
      "confidence": "high",
      "reasoning": "Presence check: condition is True when an RFF segment with qualifier Z41 (Referenznummer des Vorgangs der Anmeldung nach WiM) exists. RFF qualifier is at elements[0][0].",
      "description_hash": "91c83dc2",
      "is_external": false
    },
    "564": {
      "confidence": "high",
      "reasoning": "Hinweis: informational annotation, always applies unconditionally",
      "description_hash": "5df791d3",
      "is_external": false
    },
    "163": {
      "confidence": "high",
      "reasoning": "Checks if any CCI segment exists in the message with qualifier ZA9 at elements[2][0] (matching AHB notation CCI+++ZA9, where elements[0] and elements[1] are empty and elements[2] carries the class code). Simple message-wide qualifier check.",
      "description_hash": "b2122346",
      "is_external": false
    },
    "523": {
      "confidence": "high",
      "reasoning": "Hinweis condition — informational annotation about using Tranche ID, always applies unconditionally.",
      "description_hash": "066912df",
      "is_external": false
    },
    "940": {
      "confidence": "high",
      "reasoning": "Format condition: string must start with + followed by digits only — standard international phone number format. COM segment elements[0][0] holds the communication value. Uses validate_phone helper which checks for leading + and all-digit remainder.",
      "description_hash": "de8363bc",
      "is_external": false
    },
    "165": {
      "confidence": "low",
      "reasoning": "The condition depends on business context: whether the tranche referenced in SG34 RFF+Z20 DE1154 is being reconfigured due to an LF assignment or was newly formed. The presence of RFF+Z20 and LIN+Z16 can be checked structurally, but the business reason ('aufgrund einer Zuordnung eines LF' / 'neu gebildet') cannot be determined from EDIFACT content alone. Marking as external.",
      "description_hash": "e1fdfb14",
      "is_external": true
    },
    "2095": {
      "confidence": "high",
      "reasoning": "This is a Hinweis-style cardinality annotation about SG29 repetition. It references 'Codeliste der Konfigurationen Kapitel 7' for valid product combinations — an external reference that cannot be evaluated from within the message. The condition describes completeness expectations without a boolean predicate. Always returns True.",
      "description_hash": "0d57eb8a",
      "is_external": false
    },
    "567": {
      "confidence": "high",
      "reasoning": "Hinweis: informational annotation, always applies unconditionally",
      "description_hash": "b7cc061b",
      "is_external": false
    },
    "1": {
      "confidence": "high",
      "reasoning": "IMD+Z03: notation resolver explicitly maps to elements[0][0]=='Z03' (DE7077 Beschreibungsformat). Simple qualifier existence check.",
      "description_hash": "80c40fa3",
      "is_external": false
    },
    "69": {
      "confidence": "high",
      "reasoning": "Simple absence check: NAD+Z23 (Marktlokationsadresse) not present in message. elements[0][0] == 'Z23'.",
      "description_hash": "a1b0de85",
      "is_external": false
    },
    "15": {
      "confidence": "high",
      "reasoning": "Market participant role MSB (Messstellenbetreiber) for NAD+MS cannot be determined from the EDIFACT message alone — requires external role registry.",
      "description_hash": "8a4c29be",
      "is_external": true
    },
    "172": {
      "confidence": "low",
      "reasoning": "The condition checks whether the location identified in SG2 LOC+172 DE3225 concerns integration into or removal from a Kundenanlage per §20 Abs.1d EnWG. While LOC+172 presence is detectable, the semantic classification (Integration vs. Herauslösung vs. ordinary Meldepunkt) requires external business context. The AHB explicitly refers to 'Details siehe UTILMD AHB Strom', confirming this is a complex domain rule not derivable from the message alone.",
      "description_hash": "2420a25c",
      "is_external": true
    },
    "2064": {
      "confidence": "medium",
      "reasoning": "Count LIN segments where elements[1][0]==\"Z68\" (LIN++Z68, Konfigurationserlaubnis Typ 2 SMGW). Condition is True when at most one such SG29 line item is present per message.",
      "description_hash": "ef63975b",
      "is_external": false
    },
    "104": {
      "confidence": "medium",
      "reasoning": "Checking whether the NAD+VY party has role LF requires external market participant role context — cannot be determined from the EDIFACT message alone.",
      "description_hash": "225b1798",
      "is_external": true
    },
    "500": {
      "confidence": "high",
      "reasoning": "This is a 'Hinweis' (informational note) — 'Zählpunkt der BAS'. It provides documentation context about the field, not an evaluatable boolean condition.",
      "description_hash": "0e63d65b",
      "is_external": false
    },
    "12": {
      "confidence": "medium",
      "reasoning": "Condition 12 'Wenn vorhanden' is a generic self-referential meta-condition indicating that the attached validation rule applies whenever the field is populated. The validator framework handles actual presence detection; this evaluator simply returns True to indicate the rule is always applicable when invoked.",
      "description_hash": "fae4710e",
      "is_external": false
    },
    "555": {
      "confidence": "high",
      "reasoning": "Hinweis condition — informational annotation describing where the value comes from (SG4 IDE+24 DE7402 of UTILMD with BGM+E01). Always returns True.",
      "description_hash": "c4344499",
      "is_external": false
    },
    "6": {
      "confidence": "high",
      "reasoning": "Market participant role LF (Lieferant) for NAD+MS cannot be determined from the EDIFACT message alone — requires external role registry or business context lookup.",
      "description_hash": "750a0a6b",
      "is_external": true
    }
  }
}