File size: 140,677 Bytes
ed26ce9 | 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 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 1476 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512 1513 1514 1515 1516 1517 1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 1538 1539 1540 1541 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 1556 1557 1558 1559 1560 1561 1562 1563 1564 1565 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 1597 1598 1599 1600 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610 1611 1612 1613 1614 1615 1616 1617 1618 1619 1620 1621 1622 1623 1624 1625 1626 1627 1628 1629 1630 1631 1632 1633 1634 1635 1636 1637 1638 1639 1640 1641 1642 1643 1644 1645 1646 1647 1648 1649 1650 1651 1652 1653 1654 1655 1656 1657 1658 1659 1660 1661 1662 1663 1664 1665 1666 1667 1668 1669 1670 1671 1672 1673 1674 1675 1676 1677 1678 1679 1680 1681 1682 1683 1684 1685 1686 1687 1688 1689 1690 1691 1692 1693 1694 1695 1696 1697 1698 1699 1700 1701 1702 1703 1704 1705 1706 1707 1708 1709 1710 1711 1712 1713 1714 1715 1716 1717 1718 1719 1720 1721 1722 1723 1724 1725 1726 1727 1728 1729 1730 1731 1732 1733 1734 1735 1736 1737 1738 1739 1740 1741 1742 1743 1744 1745 1746 1747 1748 1749 1750 1751 1752 1753 1754 1755 1756 1757 1758 1759 1760 1761 1762 1763 1764 1765 1766 1767 1768 1769 1770 1771 1772 1773 1774 1775 1776 1777 1778 1779 1780 1781 1782 1783 1784 1785 | """Officer-facing legal wording and routing that lives in CODE, registered for
the pre-deploy review gate (verifier, 2026-09-12; governing principle 1).
Legal characterisations belong in data/curated/*.json, where the review gate
(data/curated/review_state.json + tools/predeploy.py) holds them until the
maintainer signs off. Some legal text and routing live in code instead -- the
allegation, removal-path, s. 44, family, IAD and fee lines, the tie map, the
publisher labels, the rehabilitation methodology and caveats, the s. 17 and
single-occurrence rules. A composed release ships main's CODE, so without
this registry that text would reach the Space with no approval step.
tools/predeploy.py reads REVIEWED from the deploy tree (with `ast`, never by
importing it), fingerprints each named top-level assignment or function in
that tree (its AST, docstrings dropped -- formatting and comments do not
count, words and logic do) TOGETHER WITH every top-level canlex definition it
reaches (the names its body uses, in its own module or imported from another
canlex module, transitively -- wave 2 verifier: a change to a helper such as a
unit table or a negation window must hold the registered name relying on it)
and compares it with the same name at the approved-code commit recorded in
data/curated/review_state.json ("approved_code"). A name that is new or
differs is HELD (the gate names the reached definitions that changed), and
the review check fails unless the maintainer approves it (record the
reviewed commit: `python tools/predeploy.py --print-review-state <commit>`)
or the deploy is run with --allow-held. tests/test_reviewed_code.py checks
that every entry names a top-level definition that exists, and that every
definition a registered name reaches is classified: registered here if it
carries legal wording or routing, else listed in PLUMBING below.
Add an entry when new officer-facing legal wording or routing goes into code.
Each entry: (repo-relative path, top-level name, why it is legal content).
"""
REVIEWED = (
# the screening memo's allegation and next-steps block (roadmap T1.7)
("canlex/server.py", "_ALLEGATION", "verbatim IRPA s. 36 allegation wording"),
("canlex/server.py", "_allegation_lines", "which paragraph is drafted; the no-allegation rules"),
("canlex/server.py", "_REMOVAL_FN", "removal path for a foreign national (IRPR ss. 228, 229, 42)"),
("canlex/server.py", "_REMOVAL_PR", "removal path for a permanent resident (IRPA s. 44(2))"),
("canlex/server.py", "_S44_NOTE", "s. 44 discretion note (Cha; ENF 5)"),
("canlex/server.py", "_PARDON_LINE", "foreign-relief and previous-removal pointers"),
("canlex/server.py", "_family_line", "IRPA s. 42 / IRPR s. 23 family-member line"),
("canlex/server.py", "_next_steps", "removal, TRP, fee, IAD routing of the memo"),
("canlex/server.py", "FEE_PATTERNS", "which IRPR fee is quoted for which ground"),
("canlex/server.py", "_ASSUMED_TEXT", "what the chain assumes when a fact is missing"),
("canlex/server.py", "_YOUTH_ENTRIES",
"the youth dispositions read as the analogue of s. 17's Young Offenders Act exception "
"(H3: on the clock for the headline, the exception as a reading)"),
("canlex/server.py", "_DEFAULT_ELEMENTS_QUESTION", "the default elements question"),
("canlex/server.py", "_other_candidate_line", "how a second pairing is presented"),
("canlex/server.py", "_tran_needs", "the offence-date question for a straddled maximum"),
("canlex/server.py", "_pairing_block", "the Tran and elements wording around each pairing"),
# limb-aware Tran histories, in-force dates, point-in-time floor (T1.13, T3.1)
("canlex/server.py", "_resolve_pairing", "which limb readings are resolved; in-force and floor flags"),
("canlex/server.py", "_resolve_limb", "the Tran, value, schedule, attempt and elements rules for one limb"),
("canlex/server.py", "_combine_limbs", "settled vs 'limb-open' when the record's words select no limb"),
("canlex/server.py", "_limb_lines", "how the candidate provisions and readings are presented"),
("canlex/server.py", "_not_in_force_line", "provision not in force at commission: the two readings"),
("canlex/server.py", "_nif_entry",
"not in force at commission: which reading the result follows; each reading's branch"),
("canlex/server.py", "_open_reason", "why a result is not settled (date, limb, quantity)"),
("canlex/server.py", "_reading", "how each open reading is named in the memo"),
("canlex/server.py", "canlex_screen_record",
"step-3 routing, 'not reached' rules, bottom line, the organization fact and s. 37 block"),
("canlex/server.py", "canlex_screen_history",
"record-level count, s. 17 clock (youth exclusion, undated convictions), deeming "
"answer, record-level s. 37 block"),
("canlex/server.py", "us_record_screening",
"the guided screening prompt: routing to canlex_transborder and the organization fact"),
# organized criminality, IRPA s. 37 (roadmap T2.5)
("canlex/server.py", "_S37_GROUNDS", "s. 37(1)(a)/(b) wording and the elements to establish"),
("canlex/server.py", "_S37_AUTHORITIES", "Sittampalam and B010 pointers"),
("canlex/server.py", "_S37_ORG_CONDITION", "when s. 37(1)(a) is conditional"),
("canlex/server.py", "_s37_consequences",
"no conviction, no rehabilitation, s. 42.1 FN-only, no IAD appeal, s. 42(2), R229(1)(e)"),
("canlex/server.py", "_s37_flags", "which s. 37 paragraph a pairing or the facts raise"),
("canlex/server.py", "_s37_text", "how the s. 37 block is presented"),
("canlex/server.py", "_s37_block", "the s. 37 block and its CANLEX_RESULT value"),
# transborder criminality, IRPA s. 36(2.1) (roadmap T2.1)
("canlex/server.py", "canlex_transborder", "the transborder memo, bottom line and result"),
("canlex/server.py", "AMENDED_REFERENCES", "the A36(2)(d) repealed-provision note on guidance"),
("canlex/server.py", "_amended_notes", "where the repealed-provision note is shown"),
("canlex/transborder.py", "R19_ACTS", "the six Acts IRPR s. 19(1) names; open class vs table"),
("canlex/transborder.py", "GOODS", "the IRPR s. 19(1)(d)-(e) goods classes"),
("canlex/transborder.py", "MD_ORDERABLE", "the IRPR s. 228(1)(a.01)(i)-(v) delegate offences"),
("canlex/transborder.py", "S36_2_1", "s. 36(2.1) quotation"),
("canlex/transborder.py", "ALLEGATION_2_1", "s. 36(2.1) allegation wording"),
("canlex/transborder.py", "R19_2", "IRPR s. 19(2) hybrid deeming quotation"),
("canlex/transborder.py", "S36_3_C", "s. 36(3)(c) quotation (no rehabilitation)"),
("canlex/transborder.py", "S36_3_E", "s. 36(3)(e) quotation"),
("canlex/transborder.py", "S36_3_E_I", "s. 36(3)(e)(i) quotation (contraventions)"),
("canlex/transborder.py", "S36_3_B", "s. 36(3)(b) quotation (final acquittal)"),
("canlex/transborder.py", "S36_3_B_CONV", "s. 36(3)(b) quotation (based on a conviction)"),
("canlex/transborder.py", "ACQUITTAL_NOTE",
"a final acquittal and s. 36(2.1): both readings, not settled"),
("canlex/transborder.py", "R228_OPENING", "IRPR s. 228(1) no-other-ground condition"),
("canlex/transborder.py", "R228_4_A", "IRPR s. 228(4)(a) unaccompanied-minor exception"),
("canlex/transborder.py", "R229_D1", "IRPR s. 229(1)(d.1) quotation"),
("canlex/transborder.py", "CA_8_1_A", "Contraventions Act s. 8(1)(a) quotation"),
("canlex/transborder.py", "CR_S1", "Contraventions Regulations s. 1 quotation"),
("canlex/transborder.py", "GUIDANCE_CURRENT", "ENF 5 / ENF 6 (2025) pointers"),
("canlex/transborder.py", "GUIDANCE_STALE", "the old A36(2)(d) and 'present tense' guidance"),
("canlex/transborder.py", "TABLE_HELD", "what the tool says when the (c)-(g) table is absent"),
("canlex/transborder.py", "resolve_act", "which Act the officer's words name"),
# the code audit of 2026-09-21 (HELD): an Act named inside a longer spelling, a
# chapter cite or a trailing 's. N' is still one of the six; genuinely other Acts stay 'other'
("canlex/transborder.py", "act_and_section",
"which of the six Acts a spelling names (containment), and the section it carries"),
("canlex/transborder.py", "_ACT_CITE", "the chapter citations stripped from an Act's spelling"),
("canlex/transborder.py", "_ACT_TRAILING_SECTION", "the trailing section an Act's spelling carries"),
("canlex/transborder.py", "_ACT_SUBSECTION",
"the subsection or paragraph a trailing section carries (audit follow-up 2026-09-21)"),
("canlex/transborder.py", "_ACT_CODES", "the short Act codes matched as whole tokens only"),
("canlex/transborder.py", "mode_from_pairing", "the mode read from a curated pairing"),
("canlex/transborder.py", "pairing_act", "the Act read from a curated pairing"),
("canlex/transborder.py", "_schedule_act", "which Act a contraventions schedule is for"),
("canlex/transborder.py", "contravention_schedules",
"which Acts the contraventions schedules are for (one per schedule), the count printed"),
("canlex/transborder.py", "contravention_check", "the s. 36(3)(e)(i) carve-out rule and text"),
("canlex/transborder.py", "_open_class", "the s. 19(1)(a)/(b) mode rule"),
("canlex/transborder.py", "_md", "the s. 228(1)(a.01) delegate rule"),
("canlex/transborder.py", "_from_table", "how the (c)-(g) table answers, readings and needs"),
("canlex/transborder.py", "assess", "the transborder result: prescribed, branch, removal"),
("canlex/transborder.py", "render", "the transborder memo text and allegation"),
("canlex/transborder.py", "bottom_line", "the transborder bottom line"),
# source labels and subsequent history (roadmap T1.10, T1.11)
("canlex/server.py", "_GUIDANCE_FORCE", "legal-force label of administrative guidance"),
("canlex/server.py", "_PUBLISHERS", "publisher and legal-force labels"),
("canlex/server.py", "_NEUTRAL_PUBLISHER", "label of an unmapped guidance source"),
("canlex/server.py", "SUPERSEDED_CITES", "the Saini (FCA) subsequent-history note"),
# screening rules (roadmap T1.3, T1.4; critic single-occurrence rule)
("canlex/screening.py", "TIE_FACTS", "which fact decides each tie, and which pairing each answer selects"),
("canlex/screening.py", "_GENERIC_TIE_QUESTION", "the question for an unmapped tie"),
("canlex/screening.py", "_BRANCH_TEXT", "the s. 36 branch descriptions"),
("canlex/screening.py", "branch_for", "the s. 36 branch rule (PR, summary-only, depends)"),
("canlex/screening.py", "occurrence_range", "the different-dates-means-separate-occurrences proxy"),
("canlex/screening.py", "select_limbs", "which limb a record's words (or amount) select"),
("canlex/screening.py", "QUANTITY_LINE_KG", "the former CDSA Schedule VII cannabis amount (3 kg)"),
("canlex/screening.py", "QUANTITY_LIMBS", "which side of the quantity line each limb is"),
("canlex/screening.py", "quantity_kg", "how an amount is read from the record's text"),
("canlex/screening.py", "_AMOUNT_QUALIFIER",
"a bounded, approximate, ranged, multiplied, per-unit or gross amount leaves the quantity open "
"(LEGAL-1/2/3, 2026-09-22)"),
("canlex/screening.py", "_GROUPED_AMOUNT",
"a comma followed by three digits is a thousands separator, not a decimal (code audit 2026-09-21)"),
("canlex/screening.py", "_GROUP_SEP",
"the digit-group separators an amount may carry: comma, space, no-break spaces (audit follow-up 2026-09-21)"),
("canlex/screening.py", "_GROUP_SEP_RE", "the separators dropped from a grouped amount"),
("canlex/screening.py", "_amount_number",
"how a grouped, decimal or fractional amount becomes a number; a zero denominator is no amount"),
("canlex/screening.py", "penalty_at", "the Tran rule: the maximum at commission, limb by limb"),
("canlex/screening.py", "PIT_FLOOR_NOTE", "maximum before the point-in-time floor not verified"),
("canlex/screening.py", "not_in_force", "when a provision is treated as not in force at commission"),
("canlex/screening.py", "CANNABIS_BARE_NOTE", "bare cannabis read as possession"),
("canlex/screening.py", "CANNABIS_CONCENTRATE_NOTE", "Cannabis Act Schedule 3 note"),
("canlex/screening.py", "UCMJ_NOTE", "when 'Article N' is read as UCMJ"),
# finality: a decided appeal that left the conviction standing (T2.7 audit)
("canlex/screening.py", "APPEAL_UPHELD",
"'appeal dismissed' / 'affirmed on appeal' is a conviction, not a dismissal or a pending appeal"),
("canlex/screening.py", "CONVICTION_UPHELD", "'conviction affirmed' keeps the conviction word"),
("canlex/screening.py", "strip_appeal_upheld", "where the decided-appeal phrases are removed"),
("canlex/screening.py", "_cue_text", "the words the disposition cues and entries read"),
# rehabilitation (roadmap T1.8, T1.9, T1.12)
("canlex/rehab.py", "EXCEPT_CONTRAVENTION_YCJA", "IRPR s. 18(2) exception clause"),
("canlex/rehab.py", "_CONDITIONS", "the s. 18(2) limbs as printed"),
("canlex/rehab.py", "_TRP_CAVEAT", "TRP caveat"),
("canlex/rehab.py", "CUSTODY_CAVEAT", "six-month limb caveat (Tran; intermittent sentences)"),
("canlex/rehab.py", "GUIDE_5312_DIVERGENCE", "where Guide 5312 departs from the Regulations"),
("canlex/rehab.py", "_pr_appeal", "IAD appeal rule for a Canadian conviction (s. 64(2))"),
("canlex/rehab.py", "assess", "the rehabilitation rules and their explanations"),
("canlex/rehab.py", "_assess_canada", "the in-Canada conviction rules"),
("canlex/rehab.py", "METHODOLOGY", "canlex://methodology/rehabilitation"),
# Canadian convictions in the screening tools (roadmap T2.2)
("canlex/rehab.py", "CANADA_CURE", "the cure for a Canadian conviction (record suspension only)"),
("canlex/rehab.py", "CANADA_SENTENCES", "the Canadian sentences and outcomes the rules distinguish"),
("canlex/rehab.py", "_NO_CUSTODY", "sentences read as no term of imprisonment when no months are given"),
("canlex/rehab.py", "DISCHARGE_TEXT", "a Canadian discharge is not a conviction (C-46 s. 730(3))"),
("canlex/rehab.py", "NOT_CONVICTED_TEXT", "a Canadian charge without a conviction grounds nothing"),
("canlex/rehab.py", "CONTRAVENTION_TEXT", "s. 36(3)(e)(i) contraventions"),
("canlex/rehab.py", "YOUTH_SENTENCE_TEXT", "s. 36(3)(e)(ii)-(iii) youth sentences; adult sentences not excluded"),
("canlex/rehab.py", "RECORD_SUSPENSION_TEXT", "s. 36(3)(b) record suspension"),
("canlex/rehab.py", "ACT_OF_PARLIAMENT_NOTE", "provincial offences are not reached by s. 36(1)(a)/(2)(a)"),
("canlex/rehab.py", "CONDITIONAL_SENTENCE_NOTE", "a conditional sentence counts as no custody (Tran)"),
("canlex/rehab.py", "INTERMITTENT_NOTE", "intermittent sentences are not settled; both readings"),
("canlex/rehab.py", "CANADA_REMOVAL_FN", "R228(1)(a) delegate deportation order; R228(4) exceptions"),
("canlex/rehab.py", "CANADA_REMOVAL_PR", "ID referral, R229(1)(c), for a PR on s. 36(1)(a)"),
("canlex/rehab.py", "CANADA_BRANCH_TEXT", "the Canadian branch descriptions"),
("canlex/rehab.py", "_CANADA_STD_BRANCH", "which Canadian branch maps to which screening branch"),
("canlex/rehab.py", "_CANADA_SENTENCE_WORDS", "which words name a Canadian sentence or discharge"),
("canlex/rehab.py", "_CANADA_RECORD_SUSPENSION", "which words name a record suspension"),
("canlex/rehab.py", "_CANADA_NO_CONVICTION", "which words mean no Canadian conviction"),
("canlex/rehab.py", "_CANADA_SET_ASIDE", "which words mean a Canadian conviction was set aside"),
# the code audit of 2026-09-21 (HELD): a refused, pending, revoked or ceased record
# suspension is no s. 36(3)(b) bar; a negated or refused set-aside leaves the conviction
("canlex/rehab.py", "_CANADA_CLAUSE", "where a Canadian record's clauses break"),
("canlex/rehab.py", "_CANADA_RS_CLAUSE",
"where the relief clauses break: a parenthesis stays inside its clause (audit follow-up 2026-09-21)"),
# G2, the verification fixes of 2026-09-22 (HELD): the relief reader is an ALLOWLIST --
# one naming clause stands, everything else is not in force or NOT SETTLED
("canlex/rehab.py", "_RS_DATE", "the one date or one year a naming clause may carry"),
("canlex/rehab.py", "_RS_LOSS_PHRASE", "the losses a keep clause negates (revoked, ceased to have effect)"),
("canlex/rehab.py", "_RS_NEG_LOSS", "a negated loss ('has not been revoked')"),
("canlex/rehab.py", "_RS_KEEP",
"the keep clause: 'not revoked or ceased' negates both, 'not revoked and ceased' does not"),
("canlex/rehab.py", "_CANADA_RS_KEEP", "the only words after a naming clause that leave it standing"),
("canlex/rehab.py", "_CANADA_RS_NAMING",
"the naming clause: record suspension | pardon | pardoned [granted|ordered|issued|in force] [date]"),
("canlex/rehab.py", "_CANADA_RS_CONVICTION",
"the only disposition words that may precede a naming clause (the conviction words)"),
("canlex/rehab.py", "_CANADA_RS_ABBREVIATION",
"shorthand for a record suspension ('RS'): never stands; the not-in-force note prints (REL-13)"),
("canlex/rehab.py", "_CANADA_RS_RELIEF_WORDS",
"relief words beside a key-only relief that take it away (Parole Board, CRA, prerogative)"),
("canlex/rehab.py", "_CANADA_RS_LOSS",
"loss words beside a key-only relief that take it away (revoked, ceased, rescinded, no longer)"),
("canlex/rehab.py", "_CANADA_RS_LATER_OFFENCE",
"another conviction's words beside a key-only relief take it away (CRA s. 7.2(a))"),
("canlex/rehab.py", "_CANADA_RS_YEAR",
"a year in the disposition's words not before the relief's takes it away"),
("canlex/rehab.py", "_CRA_PARDON_LAST_DAY",
"a 'pardon' dated after 2012-03-12 may be no record suspension (CRA s. 2, s. 4.1; AI-4)"),
# H2 (2026-09-22): the readings the relief grammar opens instead of settling --
# G2-REL-B (before the Act), G2-REL-A (an undated pardon), G2-REL-E (an undated
# record suspension the entry's dates cannot place)
("canlex/rehab.py", "_CRA_FIRST_DAY",
"the first day the corpus can place a Criminal Records Act relief on (G2-REL-B)"),
("canlex/rehab.py", "PARDON_UNDATED_TEXT",
"an UNDATED pardon is NOT SETTLED: its date may fall after 2012-03-12 (CRA ss. 2, 9; G2-REL-A)"),
("canlex/rehab.py", "RELIEF_BEFORE_CRA_TEXT",
"a relief dated before the Act as the corpus carries it is NOT SETTLED, quoting its "
"s. 1 history line and s. 9 (G2-REL-B)"),
("canlex/rehab.py", "RELIEF_UNDATED_TEXT",
"an undated record suspension on a dated entry is NOT SETTLED, quoting CRA s. 4(1) (G2-REL-E)"),
("canlex/rehab.py", "relief_before_cra",
"whether the relief's date may fall before the Criminal Records Act (G2-REL-B)"),
("canlex/rehab.py", "relief_unplaced",
"an undated relief on an entry that carries a date to place it against (G2-REL-E)"),
("canlex/rehab.py", "_S36_3_B_WORDS", "verbatim IRPA s. 36(3)(b) words the relief notes quote"),
("canlex/rehab.py", "PARDON_AFTER_2012_TEXT",
"a pardon dated after 2012-03-12 is NOT SETTLED, quoting CRA ss. 2, 4.1 (definition), 9 and IRPA s. 36(3)(b)"),
("canlex/rehab.py", "RELIEF_LATER_CONVICTION_TEXT",
"a later conviction may have ended the record suspension: NOT SETTLED, quoting CRA ss. 7.2, 7"),
("canlex/rehab.py", "RELIEF_OPEN_TEXT", "which note each NOT SETTLED relief reading prints"),
("canlex/rehab.py", "_rs_clauses", "how the relief words are cut into clauses"),
("canlex/rehab.py", "_rs_naming", "a naming clause stands only with a grant word, a date or 'pardoned'"),
("canlex/rehab.py", "_rs_relief_part", "one naming clause followed by keep clauses only"),
("canlex/rehab.py", "_rs_when", "the earliest and latest day a relief's date can mean"),
("canlex/rehab.py", "relief_reading",
"the relief words read together (disposition and key): stands only on the grammar (REL-1..10, REL-3)"),
("canlex/rehab.py", "relief_dates_stand",
"a relief dated before the offence or conviction is not this conviction's (REL-11)"),
("canlex/rehab.py", "pardon_after_2012", "a bare 'pardon' dated after 2012-03-12 is NOT SETTLED (AI-4)"),
("canlex/rehab.py", "_CANADA_RS_PREROGATIVE",
"which words name a pardon under the royal prerogative of mercy or Criminal Code s. 748"),
("canlex/rehab.py", "_CANADA_RS_MERCY", "a prerogative mention counts only beside pardon, mercy or clemency"),
("canlex/rehab.py", "PREROGATIVE_PARDON_TEXT",
"a prerogative pardon is no record suspension: NOT SETTLED, citing CC s. 748(2)/(3) and IRPA s. 36(3)(b)"),
("canlex/rehab.py", "_rs_text", "how the relief words are split (a section citation stays in its clause)"),
("canlex/rehab.py", "prerogative_pardon", "a prerogative pardon routes to NOT SETTLED, never s. 36(3)(b)"),
("canlex/rehab.py", "RECORD_SUSPENSION_NOT_IN_FORCE_TEXT",
"relief words that do not stand on the grammar: screened as it stands, and how to re-run"),
("canlex/rehab.py", "record_suspension_in_force",
"whether the record suspension the words name stands (s. 36(3)(b)), on the allowlist grammar"),
("canlex/rehab.py", "_CANADA_SET_ASIDE_NEGATED", "negation before a set-aside word"),
("canlex/rehab.py", "_CANADA_SET_ASIDE_MOTION", "the motion words a refused set-aside binds to"),
("canlex/rehab.py", "_CANADA_SET_ASIDE_REFUSED", "the refusal words of a motion to set aside"),
("canlex/rehab.py", "_set_aside", "a set-aside that stands: not negated, not a refused motion's"),
("canlex/rehab.py", "_no_conviction_words",
"the charge's own no-conviction words, never a refused motion's 'dismissed'"),
("canlex/rehab.py", "_appeal_pending", "an appeal noted that no clause says was decided"),
("canlex/rehab.py", "_CANADA_OTHER_COUNTS",
"no-conviction words that name other counts: the conviction stands"),
("canlex/rehab.py", "_CANADA_APPEAL_ALLOWED", "an appeal allowed: conviction not settled"),
("canlex/rehab.py", "_LIMB_WORDS", "how the s. 36(1)(a) limbs are named in the either-way line"),
("canlex/rehab.py", "_APPEAL_WORDS", "how each IAD appeal reading is named"),
("canlex/rehab.py", "either_way_note",
"an answer every reading settles the same way: the limbs it rests on"),
# the H3 fixes of 2026-09-22 (S17-INT-1, NEW-1; HELD): the Canadian outcome words --
# a discharge (CC s. 730(3)) and a YCJA youth sentence (IRPA s. 36(3)(e)(iii)) -- are
# an ALLOWLIST, settling only as the disposition's own outcome clause
("canlex/rehab.py", "_CANADA_DISCHARGE_PHRASE", "the discharge phrases that can settle 'no conviction'"),
("canlex/rehab.py", "_CANADA_YOUTH_PHRASE", "the youth-sentence phrase that can settle 'no ground'"),
("canlex/rehab.py", "_CANADA_OUTCOME_SPLIT", "where one statement of a Canadian record ends"),
("canlex/rehab.py", "_CANADA_DISCHARGE_CLAUSE",
"the clause a discharge may be: the court's own order and nothing else (CC s. 730(1))"),
("canlex/rehab.py", "_CANADA_DISCHARGE_CONTRA",
"what no other clause may say beside a discharge (convict, revoke, refuse, appeal, "
"set aside, another count -- CC s. 730(3)(b), s. 730(4))"),
("canlex/rehab.py", "_CANADA_YOUTH_CLAUSE",
"the clause a youth sentence may be: the sentence the young person received"),
("canlex/rehab.py", "_CANADA_YOUTH_CONTRA",
"what no other clause may say beside a youth sentence (refused, set aside, as an adult)"),
("canlex/rehab.py", "_CANADA_OUTCOME_ALLOW", "which words are read on the outcome allowlist"),
("canlex/rehab.py", "canada_clauses", "a Canadian disposition's clauses, as the allowlists read them"),
("canlex/rehab.py", "canada_outcome_stands",
"whether a discharge or youth-sentence word is the disposition's own outcome"),
# the J1 fixes of 2026-09-23 (HELD): the five Canadian outcome READINGS that still keyed
# on a word ANYWHERE -- the NCR verdict (CC s. 672.35), a set-aside, the no-conviction
# words, an appeal allowed and a new trial (CC s. 686(2), s. 579) -- are an ALLOWLIST too
("canlex/rehab.py", "_CANADA_EMPTY_VALUE",
"a clause that is an empty or negative form value refuses every reading ('NCR: no')"),
("canlex/rehab.py", "_CANADA_NCR_CLAUSE",
"the clause an NCR verdict may be: the verdict itself and nothing else (CC s. 672.35)"),
("canlex/rehab.py", "_CANADA_NCR_CONTRA",
"what no other clause may say beside an NCR verdict (convict, refuse, set aside, "
"appeal, assessment, another count, a term)"),
("canlex/rehab.py", "_CANADA_SET_ASIDE_CLAUSE",
"the clause a set-aside may be: this conviction quashed, and s. 686(2)'s 'appeal "
"allowed and the conviction quashed'"),
("canlex/rehab.py", "_CANADA_SET_ASIDE_CONTRA",
"what no other clause may say beside a set-aside (convict, restore, refuse, a motion, "
"a new trial, another count, a term -- CC s. 686(1)(b), (3))"),
("canlex/rehab.py", "_CANADA_NO_CONVICTION_CLAUSE",
"the clause an acquittal, withdrawal, dismissal or stay may be"),
("canlex/rehab.py", "_CANADA_NO_CONVICTION_CONTRA",
"what no other clause may say beside a no-conviction word (convict, recommence, "
"another count, a refused motion, a term -- CC s. 579(2))"),
("canlex/rehab.py", "_CANADA_APPEAL_ALLOWED_CLAUSE",
"the clause an appeal allowed may be: the allowance itself, never one as to sentence"),
("canlex/rehab.py", "_CANADA_APPEAL_ALLOWED_CONTRA",
"what no other clause may say beside an appeal allowed (convict, affirm, restore, "
"as to, in part, another count or file)"),
("canlex/rehab.py", "_CANADA_NEW_TRIAL_CLAUSE",
"the clause a new trial ordered may be (CC s. 686(2)(b))"),
("canlex/rehab.py", "_CANADA_NEW_TRIAL_CONTRA",
"what no other clause may say beside a new trial ordered (convict, refuse, a motion, "
"another count or file)"),
("canlex/rehab.py", "_CANADA_ROUTED_NO_CONVICTION",
"the routing's own words that mean the charge ended without a conviction"),
("canlex/rehab.py", "_CANADA_READING_ALLOW",
"which Canadian outcome readings are read on the allowlist, and what keeps each"),
("canlex/rehab.py", "canada_reading_stands",
"whether an NCR verdict, a set-aside, a no-conviction word, an appeal allowed or a "
"new trial is the disposition's own outcome"),
("canlex/rehab.py", "_canada_cue_settles",
"when the shared non-conviction cue table may settle a Canadian entry"),
# the K1 fixes of 2026-09-23 (HELD): the OTHER clauses beside a settled Canadian
# outcome are an allowlist too -- every one must be a clause the grammar can place --
# and the five denylists share one derived floor (CC ss. 686(2)-(4), 579(2), 737, 742.1,
# 672.54; CRA s. 2.1(1); IRPA s. 36(3)(b))
("canlex/rehab.py", "_SENT_UNIT_LONG",
"the units screening reads a written term in, as the outcome tables read them"),
("canlex/rehab.py", "_SENT_UNIT_SHORT",
"the one-letter units, read only after a number"),
("canlex/rehab.py", "_CANADA_TERM_UNIT",
"a term of imprisonment in any unit the sentence reader knows (a term in weeks was "
"read by one reader and missed by the other)"),
("canlex/rehab.py", "_CANADA_TERM_WRITTEN",
"a term of imprisonment the record's own words stated, which a routing rewrite may "
"not silently drop"),
("canlex/rehab.py", "_CANADA_SENTENCE_WORD_CONTRA",
"the Canadian sentence words, as a contradiction of a no-conviction outcome"),
("canlex/rehab.py", "_CANADA_TERM_CONTRA",
"a sentence or ancillary order that can only follow a finding of guilt (CC s. 742.1 "
"conditional sentence, s. 737 victim surcharge, community service, restitution, DNA, "
"s. 109 prohibition, SOIRA, forfeiture)"),
("canlex/rehab.py", "_CANADA_LIVE_CONTRA",
"a clause saying the charge has not ended -- warrant, remand, adjournment, next "
"appearance (CC s. 579(2): stayed proceedings may be recommenced)"),
("canlex/rehab.py", "_CANADA_UNDONE_CONTRA",
"a clause saying the outcome did not survive -- annulled, rescinded, nullified, "
"revoked, substituted (CC s. 686(3), (4)(b))"),
("canlex/rehab.py", "_CANADA_SCOPE_CONTRA",
"a clause scoped to another count, information, indictment, docket, file or matter "
"(CC s. 686(1)(b)(i))"),
("canlex/rehab.py", "_CANADA_RELIEF_CONTRA",
"a relief clause, which presupposes the conviction it would suspend (CRA ss. 2.1(1), "
"4(1), 4.1(1); IRPA s. 36(3)(b))"),
("canlex/rehab.py", "_CANADA_SHARED_CONTRA",
"the floor every one of the five contra tables is a superset of"),
("canlex/rehab.py", "_CANADA_DATE_TEXT", "a bare date beside an outcome"),
("canlex/rehab.py", "_CANADA_ACT_NAME", "the Acts a Canadian record cites"),
("canlex/rehab.py", "_CANADA_SECTION", "a section or paragraph reference"),
("canlex/rehab.py", "_CANADA_COURT", "the Canadian courts a record names"),
("canlex/rehab.py", "_CANADA_OFFENCE_NAME",
"a bare offence name beside an outcome; a name this grammar lacks leaves the reading "
"NOT SETTLED, never settled"),
("canlex/rehab.py", "_CANADA_COMPATIBLE_CLAUSE",
"what a clause BESIDE a settled Canadian outcome may be, and nothing else"),
("canlex/rehab.py", "_CANADA_CONVICTION_QUASHED_CLAUSE",
"the s. 686(2) keep: the CONVICTION quashed, the noun mandatory -- an acquittal or an "
"NCR verdict set aside is that verdict destroyed (CC ss. 676(1)(a), 686(4)(b))"),
("canlex/rehab.py", "_CANADA_REVIEW_BOARD_CLAUSE",
"the Part XX.1 disposition the court or Review Board makes instead of a sentence "
"(CC s. 672.54), which is the NCR verdict's own consequence"),
("canlex/rehab.py", "canada_disposition", "conviction / discharge / record suspension from a Canadian record"),
("canlex/rehab.py", "canada_std_branch", "the screening branch for a Canadian answer"),
("canlex/rehab.py", "canada_removal", "the removal path for a Canadian answer"),
("canlex/rehab.py", "_READING_WORDS", "how each open Canadian reading is named"),
("canlex/rehab.py", "_READING_NEEDS", "the questions a Canadian answer asks"),
("canlex/rehab.py", "_INTERMITTENT_NEED", "the intermittent-sentence question"),
("canlex/rehab.py", "assess_canadian",
"discharge, contraventions, youth sentences, record suspension, custody (Tran), readings"),
("canlex/server.py", "_CANADA_NOTE", "Canada given to a foreign-record tool: where to screen it"),
("canlex/server.py", "CANADA_SCREEN_NOTE", "a Canadian record is screened on s. 36(1)(a)/(2)(a)"),
("canlex/server.py", "CANADA_ALSO_CHECK", "the Canadian also-check line (s. 36(2)(a) count, s. 18.1 'solely')"),
("canlex/server.py", "_CANADA_PARAMS_IGNORED", "Canadian inputs ignored for a foreign record"),
("canlex/server.py", "_canada_offence", "the Canadian maximum and mode: officer first, else the pairing"),
("canlex/server.py", "_canada_limbs_text", "how the s. 36(1)(a) limbs are named"),
("canlex/server.py", "_canada_allegation", "the s. 36(1)(a)/(2)(a) draft allegation by limb"),
("canlex/server.py", "_canada_screen", "the Canadian memo: steps, readings, removal, TRP, cure, bottom line"),
("canlex/server.py", "_canada_history_row", "a Canadian entry of screen_history"),
("canlex/server.py", "_canada_history_notes", "the record-level Canadian lines of screen_history"),
# youth at the offence (roadmap T2.6)
("canlex/server.py", "YOUTH_STATUTE", "s. 36(3)(e) as statute: Canadian youth dispositions only"),
("canlex/server.py", "YOUTH_STATUTE_CANADA", "s. 36(3)(e) applied to a Canadian record"),
("canlex/server.py", "YOUTH_POLICY", "the ENF 14 foreign-youth questions, labelled policy"),
("canlex/server.py", "UNDER_12", "C-46 s. 13 for a foreign record"),
("canlex/server.py", "UNDER_12_CANADA", "C-46 s. 13 for a Canadian record"),
("canlex/server.py", "_youth_screen", "the age at the offence, its bands and the YOUTH block"),
("canlex/server.py", "_youth_bottom_line", "the youth bottom-line bullets"),
("canlex/server.py", "_youth_history_notes", "the record-level YOUTH lines"),
# finality: convictions in absentia (roadmap T2.7)
("canlex/server.py", "ABSENTIA_CLOCK", "no rehabilitation clock for an in-absentia sentence not served"),
("canlex/server.py", "_ABSENTIA_RULE", "the rehab_clock value the tools honour"),
("canlex/server.py", "_clocks", "which clocks step 3 runs; the in-absentia rule"),
# the whole record, IRPR s. 18(2) and s. 18.1 limb by limb (roadmap T2.3)
("canlex/rehab.py", "RECORD_CLASSES", "the offence classes the limbs distinguish"),
("canlex/rehab.py", "S18_CHAPEAU", "IRPR s. 18(2)(a)-(c) chapeaux, verbatim"),
("canlex/rehab.py", "S18_1_LIMBS", "IRPR s. 18.1 limbs, verbatim"),
("canlex/rehab.py", "HYBRID_READINGS",
"roadmap DECISION (a): a hybrid equivalent in (iv)/(vi), both readings"),
("canlex/rehab.py", "ANCHOR_READINGS",
"roadmap DECISION (b): the anchor of 'the last N years', both readings"),
("canlex/rehab.py", "RECORD_NOTES", "record suspensions and youth dispositions in the limbs: not settled"),
("canlex/rehab.py", "S34_1_C", "Interpretation Act s. 34(1)(c), verbatim (a hybrid convicted summarily)"),
("canlex/rehab.py", "PROSECUTED", "the Crown's election on a Canadian hybrid offence"),
("canlex/rehab.py", "YCJA_EXCEPTION_LIMBS", "which s. 18(2) limbs carry the YCJA exception"),
("canlex/rehab.py", "_could", "whether a paragraph's subject can be on a record too open to run"),
("canlex/rehab.py", "_normalize", "what a record entry is for the limbs (kind, class, dates)"),
("canlex/rehab.py", "_dims", "which open facts are run both ways, and the question each asks"),
("canlex/rehab.py", "_anchor_bounds", "an undated conviction read between offence and completion"),
("canlex/rehab.py", "_window_end", "when a conviction leaves 'the last N years' (day-after convention)"),
("canlex/rehab.py", "_none_within", "'has not within the last N years been convicted'"),
("canlex/rehab.py", "_at_most_one_before", "'not before the last N years ... more than one'"),
("canlex/rehab.py", "_one_old_at_most", "limb (iv): Canadian summary convictions"),
("canlex/rehab.py", "_paragraph", "every limb of s. 18(2)(a)-(c) and s. 18.1 as a rule on the entries"),
("canlex/rehab.py", "_outcome", "when a paragraph holds: every limb at once, or never"),
("canlex/rehab.py", "_evaluate", "pass / fail / unknown over every open fact; what decides a limb"),
("canlex/rehab.py", "_limb_text", "how each limb is named"),
("canlex/rehab.py", "check_limbs", "one paragraph, limb by limb"),
("canlex/rehab.py", "_s17", "the s. 17 clock over the record; conviction vs act basis"),
# the G3 fixes of 2026-09-22 (S17-1/2/3, PREROG-2/3, AI-5; HELD): the s. 17 clock takes
# every matter and every entry that may be a conviction at its strictest reading
("canlex/rehab.py", "_s17_is_open",
"which entries are read both ways on the s. 17 clock (an open verdict; a conviction in "
"Canada the words do not settle, save a conditional prerogative pardon; H3: an entry "
"step 1 places without settling, and a youth disposition)"),
("canlex/rehab.py", "_s17_entries",
"which convictions, open entries, youth dispositions and acts are on the s. 17 clock"),
("canlex/rehab.py", "_s17_other_readings",
"the clock entry's other s. 17 readings (one per open entry; 'no federal equivalent' together)"),
("canlex/rehab.py", "_s17_act_matter",
"which committed acts s. 17(b) runs from, on the conviction basis too (a permanent "
"resident's act under the 10-year line left out there)"),
("canlex/rehab.py", "_PREROGATIVE_CONDITIONAL",
"the one phrase that counts a prerogative-pardoned conviction plainly on the s. 17 clock"),
("canlex/rehab.py", "_PREROGATIVE_FREE", "'free' beside it keeps both s. 17 readings"),
("canlex/rehab.py", "prerogative_kind",
"a conditional prerogative pardon (CC s. 748(2)/(3)) leaves the conviction on the s. 17 clock"),
("canlex/rehab.py", "_reading_answer", "the record-level status and explanation of one reading"),
("canlex/rehab.py", "assess_record",
"the record-level answer: readings that decide it, dates, PR, no foreign ground"),
("canlex/server.py", "_pairing_classes", "a curated pairing's class for the limbs"),
("canlex/server.py", "_limb_classes", "the classes an unresolved entry can be"),
("canlex/server.py", "_record_entries", "screen_history rows as the record the limbs read"),
("canlex/server.py", "_PROSECUTED_WORDS", "how canada_prosecuted may be written"),
("canlex/server.py", "_limb_when", "how a limb's start / stop date is printed"),
("canlex/server.py", "_para_outcome", "each paragraph's answer as printed"),
("canlex/server.py", "_limb_table", "the limb table"),
("canlex/server.py", "_limb_section", "the limb section: readings, warnings, no paragraph"),
("canlex/server.py", "_deem_clock_text", "which limb and entry set the deeming clock"),
# foreign pardons and relief by effect: the Saini checklist (roadmap T2.8)
("canlex/screening.py", "SAINI_QUOTES", "Saini para 24 elements and ENF 3 s. 10.9 phrases, verbatim"),
("canlex/screening.py", "SAINI_SOURCES", "the chunks the Saini checklist cites"),
("canlex/screening.py", "saini_checklist", "the Saini checklist an entry with pardon_test prints"),
("canlex/server.py", "_DISP_PHRASE_ONLY", "a lone 'refused' name matches as a phrase only"),
("canlex/server.py", "_FOREIGN_RELIEF", "which relief entry answers a non-US record"),
("canlex/server.py", "_foreign_relief", "the US-framed relief entry replaced for a non-US record"),
("canlex/server.py", "_match_dispositions",
"which disposition entry a record's words reach (cancelled-conviction names, non-US relief)"),
# record wording read in record order; relief never creates a conviction
# (disposition roadmap T1.6, T1.7, T1.4 and the critic's items, 2026-09-16)
("canlex/screening.py", "DISPOSITION_CUE_TABLE",
"the one record-order cue table: not-guilty plea, trial set, programme / revocation / "
"adjudication, adult court, refused relief, stayed term, no disposition, sentencing "
"pending, count scope, dismissal after conviction words, set-aside mechanism words"),
("canlex/screening.py", "_SEGMENT_BREAK", "where a record's segments break (revocation, refusal)"),
("canlex/screening.py", "DISPOSITION_FLAGS", "the record-wording flags and their order"),
("canlex/screening.py", "QUESTION_FLAGS", "which flags leave step 1 NOT SETTLED"),
("canlex/screening.py", "_revoked_then_adjudicated",
"a programme revoked then guilt adjudicated: bound revocation, continuation block, later judgment"),
("canlex/screening.py", "record_order",
"the routing rules that rewrite the record's words, and the question flags raised"),
("canlex/server.py", "_US_ONLY_ENTRIES", "entries never matched for a non-US record (set-aside-1203-4)"),
("canlex/server.py", "_RELIEF_YIELDS_TO", "the verdicts before which a relief entry yields"),
("canlex/server.py", "_relief_yields", "relief can remove a conviction, never create one"),
("canlex/server.py", "DISPOSITION_FLAG_LINES", "the memo and card wording of each record-wording flag"),
("canlex/server.py", "DISPOSITION_FLAG_QUESTIONS", "the deciding question of each question flag"),
("canlex/server.py", "STEP1_ONE_READING", "an entry printed as one reading when the wording leaves step 1 open"),
("canlex/server.py", "_FLAG_ENTRIES", "the entries each question flag answers for"),
# state rows and non-US routing (disposition roadmap T1.8, T1.9, 2026-09-16)
("canlex/server.py", "_FOREIGN_RELIEF_WORDS",
"the words a non-US record must carry for expungement to yield to the rehabilitation-law entry"),
("canlex/server.py", "_GATE_BONUS",
"a place-gated match breaks a tie: ahead for its listed place, behind with no place named"),
("canlex/server.py", "_place_gate",
"when a place-gated entry or name meets a record: listed place, no place (phrase only), other"),
("canlex/server.py", "_combine_gates", "an entry's gate and a name's gate combined"),
("canlex/screening.py", "_CONVICTION_NOT_RECORDED",
"'conviction not recorded' / 'without proceeding to conviction' / 'without recording a "
"conviction' cancel the conviction word"),
("canlex/server.py", "_step1_flags",
"a question flag makes step 1 fact-specific with no state row; the set-aside exception"),
("canlex/server.py", "_entry_brief",
"the disposition answer: the step-1 headline, the governing row, the Saini checklist"),
# element resolvers for pairings that depend on the elements (roadmap T2.10)
("canlex/screening.py", "resolve_elements",
"which Canadian provision an element answer or the element's words select; when it stays open"),
("canlex/screening.py", "_NOT_ASSERTED", "words that negate or doubt an element cue"),
("canlex/screening.py", "_CLAUSE_BREAK", "where a negation stops reaching"),
("canlex/screening.py", "element_cues_found", "how an element's words are found in the record"),
("canlex/screening.py", "resolver_answers", "how an element answer is read from the facts"),
("canlex/screening.py", "_without_answers", "a fact's own name is never read as an element's words"),
("canlex/screening.py", "outcome_max", "an outcome's maximum at the offence date (Tran)"),
("canlex/screening.py", "_resolver_need", "the element question and its options"),
("canlex/server.py", "_resolver_lines", "the resolved element or the deciding question, as printed"),
("canlex/server.py", "_term_notes", "which curated element split a record's words raise"),
("canlex/server.py", "_equivalency_report", "the equivalency report; element questions routed to facts"),
# matcher routing added with the gold misses (track A step A9)
("canlex/screening.py", "_PC_664", "'PC 664/NNN' read as an attempt of section NNN"),
("canlex/screening.py", "is_attempt", "when a record is read as an attempt (s. 463)"),
("canlex/screening.py", "PENALTY_GROUP_NOTE", "a Texas penalty group is not a CDSA schedule"),
("canlex/screening.py", "_TX_PENALTY_GROUP", "which words are read as a Texas penalty group"),
("canlex/screening.py", "_DRUG_CONTEXT", "when an amount or penalty group is dropped from a drug charge"),
# inchoate and party liability (track A step A10, roadmap T2.4)
("canlex/screening.py", "_INCHOATE_CUES",
"which words read as an attempt, accessory, counselling, conspiracy or party"),
("canlex/screening.py", "INCHOATE_READINGS", "each reading's Criminal Code rule and label"),
("canlex/screening.py", "KIND_READINGS",
"which readings each kind has (counselling committed or not; a bare accessory)"),
("canlex/screening.py", "INCHOATE_FACT", "the facts answer that settles a two-reading kind"),
("canlex/screening.py", "INCHOATE_OPEN_REASON", "why an inchoate result is not settled"),
("canlex/screening.py", "EXPRESS_EXCEPTIONS",
"the express exceptions to ss. 463-465 for murder (ss. 239, 240, 465(1)(a), 464(a))"),
("canlex/screening.py", "inchoate", "the kind, cue and object read from the record's words"),
("canlex/screening.py", "inchoate_match",
"the object matched on its own; when a term names a complete offence instead"),
("canlex/screening.py", "inchoate_max",
"ss. 463(a)-(d), 464, 465(1)(c)/(d), 21(1) and the express exceptions"),
("canlex/screening.py", "attempt_max", "the s. 463 attempt maximum"),
("canlex/screening.py", "limb_provision", "the curated provision the exceptions are keyed on"),
("canlex/screening.py", "_INCHOATE_BASE", "the statute summary printed for each kind"),
("canlex/screening.py", "EXPRESS_EXCEPTIONS_NOTE", "the express-exceptions note"),
("canlex/screening.py", "inchoate_note", "which note an inchoate record prints"),
("canlex/screening.py", "attempt_note", "the note for a record's inchoate words"),
("canlex/screening.py", "_INCHOATE_STEM", "which curated terms can carry an inchoate cue"),
("canlex/screening.py", "_AID_ABET", "'aiding and abetting' is one liability, not two offences"),
("canlex/screening.py", "_COUNT_SUFFIX",
"a count suffix after a comma ('theft, 2 counts') stays with its offence (audit follow-up 2026-09-21)"),
("canlex/screening.py", "_DIGIT_GROUP_COMMA", "a comma-space inside a digit group is the amount's"),
("canlex/screening.py", "_COUNT_WORDS", "a count beside the offence leaves the matching text"),
("canlex/screening.py", "_UNIT_WORDS", "the unit words that make a digit an amount, not a count"),
("canlex/screening.py", "_MULTIPLIED_AMOUNT",
"a multiplier before an amount ('2 x 2 kg') leaves the quantity unsettled (review of the follow-up)"),
("canlex/screening.py", "split_offences", "where one record string is split into offences"),
("canlex/screening.py", "_best_match",
"a curated term also matches with its abbreviations expanded, as the record is read"),
("canlex/server.py", "_step2", "an inchoate record is matched by its object offence"),
("canlex/server.py", "_reading_label", "how a limb and/or inchoate reading is named"),
("canlex/server.py", "_inchoate_decisive", "when the inchoate-role fact decides the band"),
("canlex/server.py", "_inchoate_field", "the CANLEX_RESULT 'inchoate' readings"),
("canlex/server.py", "_INC_KIND", "how each inchoate kind is named"),
("canlex/server.py", "_inchoate_applied", "the rule named beside each period's maximum"),
("canlex/server.py", "_inchoate_lines", "the inchoate lines of the step-2 block"),
# wave 2 verifier: helpers carrying legal routing that the registered
# names above rely on (the gate now also fingerprints each registered
# name with everything it reaches -- tools/predeploy.py CodeTree)
("canlex/screening.py", "tran_bound", "Tran with no offence date: the conviction/completion bound"),
("canlex/screening.py", "tran_outcomes", "the periods a straddled maximum is reported in (Tran)"),
("canlex/screening.py", "history_rows",
"which history rows apply to a limb; methodology (b) for a row higher than now"),
("canlex/screening.py", "limb_max", "a limb's current maximum"),
("canlex/screening.py", "pit_floor", "the point-in-time floor a pairing is checked from"),
("canlex/screening.py", "PIT_FLOOR", "where CanLex's point-in-time research starts"),
("canlex/screening.py", "MURDER", "the provision the express exceptions are keyed on"),
("canlex/screening.py", "LIFE", "the structured stand-in for imprisonment for life"),
("canlex/screening.py", "OPEN_BRANCHES", "the branches reported with several readings, no band"),
("canlex/screening.py", "STRUCTURED_LIMB",
"the limb key that selects a pairing's structured-maximum penalty_history rows"),
("canlex/screening.py", "STATED_LIMB",
"the limb key that selects a pairing's stated-high penalty_history rows"),
("canlex/screening.py", "_KG_PER_UNIT", "unit conversions deciding the former 3 kg Schedule VII line"),
("canlex/screening.py", "_AMOUNT", "which written amounts are read as a quantity"),
("canlex/screening.py", "_asserted", "the negation window for element cues (three words)"),
("canlex/screening.py", "_WORDS_AND_BREAKS", "the words and breaks the negation window counts"),
("canlex/screening.py", "_singular", "plural record words read as the curated term"),
("canlex/screening.py", "ABBREVIATIONS", "record shorthand read as offence words"),
("canlex/screening.py", "PHRASE_ABBREVIATIONS", "record shorthand phrases read as offence words"),
("canlex/screening.py", "SUBSTANCES", "drug names and the CDSA schedule each resolves to"),
("canlex/screening.py", "ALIASES", "statute codes read as offence words"),
("canlex/screening.py", "_EXTRA_ALIASES", "statute codes read as offence words (code table)"),
("canlex/screening.py", "match_pairings", "which pairing a record's words match (negative terms)"),
("canlex/screening.py", "MIN_SCORE", "the score below which a pairing is not a match"),
("canlex/screening.py", "is_tie", "when two pairings match a label equally"),
("canlex/screening.py", "tie_spec", "the deciding fact of a tie"),
("canlex/screening.py", "resolve_tie", "which supplied fact settles a tie, and how"),
("canlex/screening.py", "offence_notes", "the notes an offence's words print"),
("canlex/screening.py", "RECORD_SUSPENSION_NOTE", "the record-suspension note"),
("canlex/screening.py", "_CANCELLED_CONVICTION", "words that cancel a conviction"),
("canlex/screening.py", "_CONVICTION_CUES", "words read as a conviction"),
("canlex/screening.py", "_NON_CONVICTION_CUES", "words read as no conviction"),
("canlex/screening.py", "_NEGATED", "negations of a disposition word"),
("canlex/screening.py", "_NEGATED_CONVICTION", "negated conviction words"),
("canlex/screening.py", "disposition_cues", "conviction / non-conviction read from the words"),
("canlex/screening.py", "disposition_notes", "the notes a disposition's words print"),
("canlex/screening.py", "add_years", "rehabilitation dates: N years on (29 February)"),
("canlex/screening.py", "full_years", "rehabilitation dates: full years elapsed"),
("canlex/screening.py", "years_since", "rehabilitation dates: years since completion"),
# wave 2 verifier, blockers 1 and 2: the maxima a pairing's verify rows
# quote; a maximum at commission higher than now (methodology (b))
("canlex/screening.py", "_NUM_WORDS", "number words in statute phrases"),
("canlex/screening.py", "_STATED_MAX", "which statute phrases state a maximum"),
("canlex/screening.py", "maxima_stated", "the maxima a statute phrase states"),
("canlex/screening.py", "STRUCTURED_LABEL", "how the structured-maximum reading is named"),
("canlex/screening.py", "STATED_LABEL", "how the higher quoted maximum's reading is named"),
("canlex/screening.py", "STATED_OPEN_REASON", "why a limb-less inchoate result is not settled"),
("canlex/screening.py", "stated_limbs",
"a limb-less pairing's higher quoted maximum as a second reading of an inchoate record"),
("canlex/screening.py", "lenient_since", "a maximum at commission higher than now"),
("canlex/screening.py", "lenient_rows", "the rows whose maximum at commission is higher than now"),
("canlex/screening.py", "LENIENT_LABELS", "how methodology (b) and Tran-strict readings are named"),
("canlex/screening.py", "LENIENT_OPEN_REASON", "why such a result is not settled"),
("canlex/screening.py", "LENIENT_QUESTION", "the question such a result asks"),
("canlex/screening.py", "LENIENT_NOTE", "the MAXIMUM AT COMMISSION HIGHER THAN NOW note"),
("canlex/screening.py", "MURDER_HELD_NOTE", "the approved baseline's murder forms: s. 239 / s. 240"),
("canlex/screening.py", "MURDER_EXCEPTION_TEXT", "the express exception for each inchoate kind"),
("canlex/screening.py", "murder_held_note", "when the murder note is printed"),
("canlex/screening.py", "OFFENCE_WORDS_NOTE",
"an element cue in the offence text alone suggests, never settles (principle 5)"),
("canlex/rehab.py", "_INDICTABLE", "the s. 36(3)(a) hybrid-as-indictable class"),
("canlex/rehab.py", "_occurrences", "the single-occurrence rule over a record"),
("canlex/rehab.py", "_limb", "one s. 18(2) limb as a rule on the entries"),
("canlex/rehab.py", "_holds", "when a limb holds for an entry"),
("canlex/rehab.py", "_none_of", "'has not been convicted of' over the entries"),
("canlex/rehab.py", "_PARAS", "the s. 18(2) paragraphs the record rules run"),
("canlex/rehab.py", "_ANY_CLASS", "the classes an unresolved entry can be"),
("canlex/rehab.py", "_ACT_OFFENCE", "the act-branch class of an entry"),
("canlex/rehab.py", "conditions_for", "which s. 18 conditions are printed for an answer"),
("canlex/rehab.py", "METHODOLOGY_QUOTES", "verbatim quotes in the rehabilitation methodology"),
("canlex/server.py", "_DISP_APPEAL_DECIDED", "which decided-appeal words read as an acquittal"),
("canlex/server.py", "_DISP_CANCEL", "disposition words that cancel a conviction"),
("canlex/server.py", "_DISP_GENERIC", "disposition words too generic to match an entry alone"),
("canlex/server.py", "_DISP_STOP", "disposition words ignored in matching"),
("canlex/server.py", "_DISP_WEAK", "disposition words that match only with others"),
("canlex/server.py", "_CONVICTION_ENTRY", "the entry a bare conviction reads as"),
("canlex/server.py", "_LIMB_HOLDS", "how each s. 18(2) limb outcome is printed"),
("canlex/server.py", "_gives", "what each reading of the record gives"),
("canlex/server.py", "_canada_inputs", "which inputs a Canadian record reads"),
("canlex/server.py", "_history_desc", "the Tran history text officers read"),
("canlex/server.py", "_step1", "step 1: which disposition entry and verdict"),
("canlex/server.py", "canlex_us_disposition",
"the disposition memo: one resolved step 1 for text and result; the framework pointer"),
("canlex/server.py", "_disposition_result", "the disposition answer and non-US relief printing"),
("canlex/server.py", "NON_US_LABEL", "the non-US record label"),
("canlex/server.py", "_allegation_text", "the allegation paragraph"),
("canlex/server.py", "_application_warning", "the application-type warning"),
("canlex/server.py", "_rehab_brief", "the one-line rehabilitation answer"),
("canlex/server.py", "_rehab_report", "the rehabilitation report"),
("canlex/server.py", "_elapsed_line", "the Elapsed line"),
("canlex/server.py", "_s18_compact", "the compact s. 18 answer"),
("canlex/server.py", "_superseded_notes", "the subsequent-history notes"),
("canlex/server.py", "_with_superseded", "where the subsequent-history notes are appended"),
("canlex/server.py", "_term_note_lines", "how a curated element split is printed"),
("canlex/server.py", "_tie_fields", "the result of an unresolved tie"),
("canlex/server.py", "_tie_resolved_line", "how a settled tie is printed"),
("canlex/server.py", "_basis_label", "how each footing is named"),
("canlex/server.py", "_jurisdiction", "US / non-US / Canada routing of a record"),
("canlex/server.py", "_jurisdiction_summary", "how the jurisdiction reading is printed"),
("canlex/server.py", "_fee", "the fee quoted"),
("canlex/server.py", "_lenient_lines", "the MAXIMUM AT COMMISSION HIGHER THAN NOW lines"),
("canlex/server.py", "ABSENTIA_HELD", "the held in-absentia rule absent from a deployment"),
("canlex/server.py", "_ABSENTIA_WORDS", "which words say a conviction was in absentia"),
("canlex/transborder.py", "section_relation", "whether a cited section matches an IRPR s. 19 row"),
("canlex/transborder.py", "parse_section", "how a cited section is read"),
("canlex/transborder.py", "MODES", "the prosecution modes a row can carry"),
("canlex/transborder.py", "load_table", "the (c)-(g) table read (held; absent: TABLE_HELD)"),
("canlex/commentary.py", "_entry_text", "the disposition checklist as rendered"),
("canlex/commentary.py", "_STATUS_LABEL", "authority-status labels"),
("canlex/commentary.py", "_VERDICT_LABEL", "verdict labels"),
("canlex/commentary.py", "SURVEY_NOTE", "the state-survey note"),
("canlex/commentary.py", "BANNER", "the curated-commentary banner"),
# provenance of state rows and statute-code aliases (roadmap T3.5, track A
# step A11): how each row's source is labelled; which statute a code is
# read as, for which state and offence date, and what is printed
("canlex/commentary.py", "provenance_label", "the provenance tier printed with every state row"),
("canlex/commentary.py", "row_tier", "the step-1 provenance tier of a state row"),
("canlex/commentary.py", "row_notes", "the held characterisation and what-decides-it lines of a row"),
("canlex/commentary.py", "row_provenance", "the CANLEX_RESULT provenance tier of a state row"),
("canlex/screening.py", "ALIAS_JURISDICTIONS", "the state each code-table bare section number is read as"),
("canlex/screening.py", "_BARE_KEY", "which statute codes name no state (the state rule)"),
("canlex/screening.py", "_MAINE_MRS", "Maine 'M.R.S.' read as 'M.R.S.A.'"),
("canlex/screening.py", "alias_key", "a statute code read as a record is read (which codes can fire)"),
("canlex/screening.py", "_alias_reading",
"which reading of a code applies: offence date, bare number vs the record's state"),
("canlex/screening.py", "_alias_what", "how the statute a code was read as is named"),
("canlex/screening.py", "alias_note", "'read <code> as <jurisdiction> <catchline>' and the not-applied notes"),
("canlex/screening.py", "alias_needs", "the offence-date question a date-dependent code asks"),
("canlex/server.py", "_step2_match", "step 2's matching, tie, candidates and fields (the former _step2)"),
# the criminality route's promotable provisions (roadmap T5.2, track A
# step A12): which statutes _ensure_primary may put in front of an
# officer on an s. 36 question -- a legal characterisation, like
# transborder.R19_ACTS. The route's firing heuristics and the allowlist
# assembly are PLUMBING below; these two constants are the content.
("canlex/index.py", "_CRIMINALITY_STATIC",
"the provisions that govern criminal inadmissibility and relief from it "
"(IRPA ss. 33/36/37/44, IRPR ss. 17-19, YCJA ss. 82/119, CC s. 730)"),
("canlex/index.py", "_CRIMINALITY_ACTS", "the Criminal Records Act, promotable whole"),
# the authority registry wired into the tools (roadmap T3.2; track A fixer,
# wave-3 verifier 2026-09-15): what the officer is told about where a cited
# decision's text is, which pin is shown, which statute sentence is quoted
# behind a verified maximum, and when the registry is printed at all
("canlex/authorities.py", "HELD_NOTE", "registry absent: cites not linked; never canlex_case"),
("canlex/authorities.py", "READ_NOTE", "how to read the pointers; the only treatment check held"),
("canlex/authorities.py", "NO_POINTER_NOTE", "the closing line when no pointer is printed"),
("canlex/authorities.py", "UNLINKED", "a cite the registry does not hold"),
("canlex/authorities.py", "STATUS_TEXT", "in-corpus / absent / secondary-only / unavailable pointers"),
("canlex/authorities.py", "NO_SECONDARY", "no corpus source describes the decision"),
("canlex/authorities.py", "VERIFY_LABEL", "the VERIFIED TEXT label"),
("canlex/authorities.py", "VERIFY_MISSING", "the statute text is not in this deployment"),
("canlex/authorities.py", "VERIFY_NOT_FOUND", "a verify phrase gone from the corpus: re-verify"),
("canlex/authorities.py", "renderable", "when the registry's rows are printed beside the holdings"),
("canlex/authorities.py", "read_note", "which closing line an answer citing decisions prints"),
("canlex/authorities.py", "pointer", "the pointer line under a cited authority"),
("canlex/authorities.py", "_pick_pin", "which pinned passage is shown"),
("canlex/authorities.py", "_officer_pin", "a reviewer note is never printed as a pin label"),
("canlex/authorities.py", "_where", "which secondary sources are named, in what order"),
("canlex/authorities.py", "authority_lines", "the Authorities bullets with their pointers"),
("canlex/authorities.py", "superseded_entries", "the reversed decisions guidance cites (Saini)"),
("canlex/authorities.py", "statute_sentence", "which statute sentence is quoted for a verify phrase"),
("canlex/authorities.py", "_GENERAL_CLAUSE", "the 'in any other case' limb is the one quoted"),
("canlex/authorities.py", "_CLAUSE_MARK", "where the general limb's own paragraph starts"),
("canlex/authorities.py", "_general_clause_quote", "the lead-in ... general limb quotation"),
("canlex/authorities.py", "verify_rows", "which verify rows are quoted for a pairing and limb"),
("canlex/authorities.py", "verify_lines", "the VERIFIED TEXT lines under a verified maximum"),
("canlex/server.py", "_superseded_specs", "the registry's subsequent-history entries, else SUPERSEDED_CITES"),
("canlex/server.py", "_element_readings", "each limb of an element-split code, run through step 2"),
("canlex/server.py", "_element_reading_lines", "the EACH READING block: no limb is chosen"),
("canlex/commentary.py", "row_tag", "the provenance tag of a state row in the 'all' index"),
# statute codes: the element split, shared designators, the forms read
# alike (track A fixer, 2026-09-15)
("canlex/screening.py", "_element_pick", "which limb of an element-split code the facts answer"),
("canlex/screening.py", "_CODE_TABLE_TEXAS_PC", "the code table's Texas 'PC' keys"),
("canlex/screening.py", "_CODE_TABLE_PREFIX_STATES", "the state each code-table designator is read as"),
("canlex/screening.py", "_code_table_jurisdiction", "the state a code-table key is read as"),
("canlex/screening.py", "_UCMJ_FORMS", "'UCMJ 111' and '10 USC 911' read as UCMJ Art. 111"),
("canlex/screening.py", "_MV_ACT_FORMS", "the Indian Motor Vehicles Act forms read as one key"),
("canlex/screening.py", "_code_forms", "where the UCMJ and Motor Vehicles Act forms are read"),
("canlex/screening.py", "_CODE_COMMA", "a comma before 'UCMJ' or 'court-martial' separates no offence"),
# read next, the policy caveat and held content (roadmap T3.6; wave 2
# verifier -- track A step A13, 2026-09-15, HELD)
("canlex/readnext.py", "HEADING", "the READ NEXT heading"),
("canlex/readnext.py", "COMPACT_PREFIX", "the memo's read-next label"),
("canlex/readnext.py", "ATIP_FLAG", "the flag on an unofficial ATIP copy of a withdrawn chapter"),
("canlex/readnext.py", "ATIP_SHORT", "the short ATIP flag on the memo's read-next line"),
("canlex/readnext.py", "UNRESOLVED", "a read-next key the corpus lacks is said, never dropped"),
("canlex/readnext.py", "label", "how a corpus source is named"),
("canlex/readnext.py", "flags", "the status shown with a source (ATIP copy, archived, date)"),
("canlex/readnext.py", "resolved", "official sources before unofficial ATIP copies"),
("canlex/readnext.py", "lines", "the READ NEXT block"),
("canlex/readnext.py", "compact_line", "the memo's read-next line"),
("canlex/readnext.py", "with_fallback", "when a pairing shows the framework's read-next"),
("canlex/commentary.py", "POLICY_CAVEAT_HEAD", "the policy caveat is not settled; both readings"),
("canlex/commentary.py", "policy_caveat_lines", "the policy caveat and its two readings"),
("canlex/server.py", "_pairing_read_next_items", "which read-next items a step-2 answer shows"),
("canlex/server.py", "HELD_PREFIX", "the 'HELD FOR REVIEW -- not in this deployment' label"),
("canlex/server.py", "HELD_WHAT", "how held content is named"),
("canlex/server.py", "HELD_TODO", "what the officer does when the held content is absent"),
("canlex/server.py", "HELD_ALIAS", "a statute-code reading held for review"),
("canlex/server.py", "_held_note", "the held-content line"),
("canlex/server.py", "_held_disposition", "when a disposition's words reach held content first"),
("canlex/server.py", "_held_pairing", "when an offence's words reach held content first"),
("canlex/server.py", "_held_alias", "when a statute code is read only by a held alias"),
# the pure chain, the decisive facts, the confidence block, the result
# card and completion IF SERVED AS IMPOSED (roadmap T4.1, T4.2, T4.7,
# T4.5 -- track A step A14, 2026-09-15, HELD)
("canlex/server.py", "_chain_entry", "the chain: which facts each step reads, match -> resolve -> assess"),
("canlex/server.py", "_chain_step3", "step 3 as data: which footings and clocks are assessed"),
("canlex/server.py", "_record_date_warnings", "the conviction and sentence date checks"),
("canlex/server.py", "_allegation_paras", "which IRPA paragraphs the allegation names"),
("canlex/server.py", "_NOT_SETTLED_BRANCHES", "the branches read as not settled"),
("canlex/server.py", "_rehab_signature", "what counts as a change in the rehabilitation answer"),
("canlex/server.py", "_paragraph_signature", "what counts as a change in the allegation"),
("canlex/server.py", "_chain_signature", "what a decisive fact must change"),
("canlex/server.py", "_reading_signature", "the answer one reading of an open result gives"),
("canlex/server.py", "_period_date", "the date a re-run uses for a period of commission"),
("canlex/server.py", "DECISIVE_HEAD", "the THE ANSWER CHANGES WITH THESE FACTS heading"),
("canlex/server.py", "DECISIVE_NONE", "the line when no missing fact changes the answer"),
("canlex/server.py", "DECISIVE_SUFFIX", "the ASSUMED line a decisive fact replaces"),
("canlex/server.py", "DECISIVE_QUESTIONS", "the questions the decisive facts ask"),
("canlex/server.py", "DECISIVE_ASSUMED", "which assumed code each re-run replaces"),
("canlex/server.py", "DECISIVE_RELIEF", "the relief the chain tries (pardon, expungement)"),
("canlex/server.py", "DECISIVE_AGES", "the ages the chain tries"),
("canlex/server.py", "_DECISIVE_BRANCH", "how each branch is named in the block and the card"),
("canlex/server.py", "_DECISIVE_REHAB", "how a rehabilitation answer with no status is named"),
("canlex/server.py", "_decisive_keep", "only facts whose values change the answer are kept"),
("canlex/server.py", "_need_trials", "an open result's questions, each answered with every option"),
("canlex/server.py", "_record_decisive", "which missing facts canlex_screen_record re-runs"),
("canlex/server.py", "_canada_decisive", "which missing facts a Canadian record re-runs"),
("canlex/server.py", "_decisive_answer", "one value's answer as printed"),
("canlex/server.py", "_decisive_lines", "the decisive-facts block"),
("canlex/server.py", "_chain_confidence", "the confidence block of canlex_screen_record"),
("canlex/server.py", "_canada_confidence", "the confidence block of a Canadian record"),
("canlex/server.py", "_transborder_confidence", "the confidence block of canlex_transborder"),
("canlex/server.py", "_projection_lines",
"the IF SERVED EXACTLY AS IMPOSED footing: no verdict, the margin flag"),
("canlex/server.py", "CARD_FULL", "the card's pointer to the full memo"),
("canlex/server.py", "CARD_NOT_SETTLED_ACTION", "the card's action when the answer is open"),
("canlex/server.py", "CARD_NO_GROUND_ACTION", "the card's action when nothing is engaged"),
("canlex/server.py", "CARD_DEEMED_ACTION", "the card's action when deemed rehabilitated"),
("canlex/server.py", "CARD_REPORT_FN", "the card's action for a foreign national (s. 44(1), TRP, IRPR s. 42)"),
("canlex/server.py", "CARD_REPORT_PR", "the card's action for a permanent resident (s. 44(2))"),
("canlex/server.py", "CARD_REHAB_OPEN", "the card's rehabilitation-on-application clause"),
("canlex/server.py", "_card_action", "which action the card names"),
("canlex/server.py", "_card_changes", "the card's decisive-facts line"),
("canlex/server.py", "_card_dates", "the card's dates line (a projection is not a finding)"),
("canlex/server.py", "_record_card", "the result card of canlex_screen_record"),
("canlex/server.py", "_canada_card", "the result card of a Canadian record"),
("canlex/server.py", "_history_rows",
"canlex_screen_history's per-entry chain (moved from the tool; conviction date as a Tran bound)"),
# the verification fixes of 2026-09-22 (F1: LEGAL-7/8/9, BI-4; HELD): the s. 17 clock
("canlex/server.py", "_S17_QUESTION_WORDS",
"why a later conviction may not be a s. 17 subsequent offence, as the memo names it"),
("canlex/server.py", "_s17_open_question",
"which later convictions get the second s. 17 reading (no federal equivalent, unpaired, "
"a conviction in Canada not shown under an Act of Parliament)"),
("canlex/server.py", "_s17_moved_clause",
"'grounds no inadmissibility itself' only for a no-federal-equivalent conviction"),
# the G3 fixes of 2026-09-22 (PREROG-2/3, AI-5, S17-2; HELD)
("canlex/server.py", "S17_CONDITIONAL_PARDON",
"a conditional prerogative pardon counted as a conviction on the s. 17 clock (CC s. 748(2)/(3))"),
("canlex/server.py", "_s17_conditional", "when that sentence is printed"),
("canlex/server.py", "_s17_open_why", "why an entry's conviction status is open, as the s. 17 lines say"),
# the H3 fixes of 2026-09-22 (S17-INT-4/5/6/7, REG-7; HELD)
("canlex/server.py", "_s17_open_lead",
"how the s. 17 lines name an open entry (a youth disposition's conviction is settled; "
"s. 17's Young Offenders Act exception is what is open)"),
("canlex/server.py", "CARD_OPEN_FACT_NOTE",
"the Dates-line note when an open fact cannot remove the s. 44(1) report"),
("canlex/server.py", "CARD_DEEMED_FOREIGN_ONLY",
"IRPR s. 18(2) reaches the foreign matters only (IRPA s. 36(3)(b) for a conviction in Canada)"),
("canlex/server.py", "_card_deemed_open",
"whether deemed rehabilitation holds, or could hold today, on some reading"),
("canlex/server.py", "_CARD_GROUND_OPEN_FACTS",
"the decisive facts that can take a ground away (the card cannot state the report)"),
("canlex/server.py", "_card_report_holds",
"whether a s. 44(1) report stands on every reading although a fact is open"),
("canlex/server.py", "_s17_reading_text",
"the NOT SETTLED sentence for each other s. 17 reading (one per open entry)"),
("canlex/server.py", "_s17_missing", "what the card asks when an s. 17 date is missing"),
("canlex/server.py", "_canada_open_question",
"what the record card asks when an open conviction in Canada is the only possible ground"),
("canlex/server.py", "_history_answer",
"canlex_screen_history's record step: count, s. 17 clock, deeming (moved from the tool)"),
("canlex/server.py", "_history_signature", "what a decisive fact must change on a whole record"),
("canlex/server.py", "_history_decisive_answer", "one value's answer on a whole record, as printed"),
("canlex/server.py", "_history_decisive", "which missing facts canlex_screen_history re-runs"),
("canlex/server.py", "_history_confidence", "the confidence block of canlex_screen_history"),
("canlex/server.py", "_history_card", "the result card of canlex_screen_history"),
("canlex/screening.py", "confidence_block", "the shared confidence block's shape"),
("canlex/screening.py", "step1_confidence", "what step 1 rests on: entry status, row verification"),
("canlex/screening.py", "authorities_in_corpus", "how many cited decisions are in the corpus"),
("canlex/screening.py", "maximum_source", "where the maximum applied comes from"),
("canlex/screening.py", "step2_confidence", "what step 2 rests on"),
("canlex/screening.py", "step3_confidence", "the s. 18(2) limbs left unknown"),
("canlex/screening.py", "GUIDE_5312_CHUNK", "the Guide 5312 chunk the projection cites"),
("canlex/screening.py", "GUIDE_5312_RULES", "Guide 5312's five-year rules, verbatim"),
("canlex/screening.py", "GUIDE_5312_COURT", "Guide 5312's criminal-court driving prohibition, verbatim"),
("canlex/screening.py", "IF_SERVED_LABEL", "the IF SERVED EXACTLY AS IMPOSED label (not a bound)"),
("canlex/screening.py", "MARGIN_MONTHS", "the margin a projected date is flagged within"),
("canlex/screening.py", "_SENT_FINE", "which words read as a fine"),
("canlex/screening.py", "_SENT_DRIVING", "which words read as a driving prohibition"),
("canlex/screening.py", "_SENT_PROBATION", "which words read as probation"),
("canlex/screening.py", "_SENT_PAROLE", "which words read as parole"),
("canlex/screening.py", "_SENT_JAIL", "which words read as a term of imprisonment"),
("canlex/screening.py", "_SENT_SUSP", "which words read as a suspended term"),
("canlex/screening.py", "_SENT_SUSPENDED_SENTENCE", "'suspended sentence' alone"),
("canlex/screening.py", "_SENT_BARE", "'N SUSP' after a term: the part suspended"),
("canlex/screening.py", "_SENT_FILLER", "words a sentence part may carry that change nothing"),
("canlex/screening.py", "_sentence_part", "one part of a sentence read, or not read"),
("canlex/screening.py", "parse_sentence", "a written sentence read into parts"),
("canlex/screening.py", "projected_completion",
"completion if served as imposed: which part ends last; what blocks it (a fine)"),
("canlex/screening.py", "add_months", "N months on (Interpretation Act s. 28(c))"),
("canlex/screening.py", "_add", "a term added to the sentence date"),
("canlex/screening.py", "within_margin", "the margin test"),
# the DRAFT s. 44(1) narrative skeleton, EN and FR, and the typed-entry
# screening tool (roadmap T4.6, T4.4 -- track A step A15, 2026-09-15, HELD)
("canlex/narrative.py", "HEAD", "the narrative skeleton's heading"),
("canlex/narrative.py", "INTRO", "what the skeleton is and what its brackets mean (ENF 5 s. 13.1)"),
("canlex/narrative.py", "MULTI", "one allegation per report (ENF 5 s. 13.4, quoted)"),
("canlex/narrative.py", "HELD_NOTE", "report provisions held: the provision and maximum stay CONFIRM"),
("canlex/narrative.py", "EN_FRAME", "ENF 5 s. 13.1's English narrative frames, verbatim"),
("canlex/narrative.py", "FR_FRAME", "ENF 5 s. 13.1's French narrative frames, verbatim"),
("canlex/narrative.py", "FR_ALLEGATION", "the IRPA s. 36 paragraphs in French, verbatim"),
("canlex/narrative.py", "FR_PARAGRAPH", "how each IRPA paragraph is cited in French"),
("canlex/narrative.py", "IRPA_EN", "the Act the allegation names"),
("canlex/narrative.py", "IRPA_FR", "the Act the French allegation names"),
("canlex/narrative.py", "EN_ACT", "the act-branch narrative (drafted, not ENF 5 wording)"),
("canlex/narrative.py", "FR_ACT", "the French act-branch narrative (drafted)"),
("canlex/narrative.py", "EN_TWO", "the two-offence narrative (drafted, not ENF 5 wording)"),
("canlex/narrative.py", "FR_TWO", "the French two-offence narrative (drafted)"),
("canlex/narrative.py", "TEXT", "every label and CONFIRM note of the skeleton, EN and FR"),
("canlex/narrative.py", "_BOUND_WHAT", "how a Tran bound is named in the maximum's basis"),
("canlex/narrative.py", "NO_SKELETON", "why no skeleton is drafted for a matter"),
("canlex/narrative.py", "_EN_TERM", "which English statute words are read as the maximum term"),
("canlex/narrative.py", "_FR_TERM", "which French statute words are read as the maximum term"),
("canlex/narrative.py", "term_words", "the statute's own words for the maximum, in each language (one rule)"),
("canlex/narrative.py", "term_years", "the years those words state"),
("canlex/narrative.py", "fr_cite", "the French citation's preposition"),
("canlex/narrative.py", "choose",
"which report provision is proposed: the limb, the maximum at commission, history, open"),
("canlex/narrative.py", "provision_text", "the provision bracket"),
("canlex/narrative.py", "maximum_text", "the maximum bracket: statute words, history, reading"),
("canlex/narrative.py", "_basis", "how the maximum's basis is named (offence date, bound, current)"),
("canlex/narrative.py", "_years", "how a maximum is written, per language"),
("canlex/narrative.py", "_date_text", "the date bracket: which date ENF 5 asks for is left open"),
("canlex/narrative.py", "_place_text", "the place bracket"),
("canlex/narrative.py", "_allegation_line", "the allegation sentence with the paragraph's words"),
("canlex/narrative.py", "_narrative", "the narrative sentences in ENF 5's form"),
("canlex/narrative.py", "_status_line", "the status line: FN verbatim, PR unsourced, status assumed"),
("canlex/narrative.py", "render", "the skeleton block"),
("canlex/narrative.py", "result_field", "CANLEX_RESULT 'narrative'"),
("canlex/server.py", "_NARRATIVE_WHY", "why no skeleton is drafted for an open branch"),
("canlex/server.py", "_narrative_place", "the place the skeleton names"),
("canlex/server.py", "_narrative_reading", "what the provision choice reads from a step-2 result"),
("canlex/server.py", "_narrative_allegations",
"one allegation per paragraph and per open reading; the no-skeleton notes"),
("canlex/server.py", "_narrative_held", "when the report provisions are held"),
("canlex/server.py", "_history_narrative",
"a record's allegations: per entry, the two-offence limb, Canadian entries"),
("canlex/server.py", "_NO_RELIEF", "which words confirm there is no relief"),
("canlex/server.py", "ScreenEntry", "the entry keys canlex_screen accepts and how each is described"),
("canlex/server.py", "_HistoryEntry",
"canlex_screen_history's entry: ScreenEntry's keys and checks, unknown keys ignored "
"(code audit 2026-09-21)"),
("canlex/server.py", "canlex_screen", "the typed-entry screening tool: relief, the card by default"),
("canlex/server.py", "_screen_entries",
"the record pipeline canlex_screen_history and canlex_screen share (moved from the tool): "
"relief, the assumed list, the skeleton"),
# wave-4 verifier (2026-09-15): changed this wave and not reached by a
# registered name until now
("canlex/server.py", "GROUNDING_NOTE",
"the answering instructions every search result carries: grounding, citing, and the "
"routing to related provisions"),
("canlex/server.py", "canlex_list_acts", "the corpus listing tool, with its canlex_case routing text"),
("canlex/server.py", "_publisher", "which publisher label a listed source gets"),
("canlex/commentary.py", "build",
"renders the curated commentary and the registry pointers into the corpus the tools cite"),
("canlex/screening.py", "_SPLIT",
"which separators split a record's words into offences (a code comma is not one) -- "
"decides the offence matched"),
# wave-4 fixer: relief on a conviction in Canada, the held card line, the
# open-readings note, provisions not in force at commission
("canlex/server.py", "_CANADA_RELIEF_WORDS",
"Board or CRA words in a relief key that names no record suspension: the flag says so "
"(G2: they no longer admit a relief, REL-12)"),
# G2 (2026-09-22): the NOT SETTLED relief readings on the card, the relief read with the
# entry's dates, and a record suspension a later Canadian conviction may have ended
("canlex/server.py", "CANADA_PARDON_AFTER_2012_QUESTION",
"the card question for a 'pardon' dated after 2012-03-12 (AI-4)"),
("canlex/server.py", "CANADA_LATER_CONVICTION_QUESTION",
"the card question for a record suspension a later conviction may have ended (CRA ss. 7.2(a), 7(a))"),
# H2 (2026-09-22): the card questions and conditional lines of the three readings it opens
("canlex/server.py", "CANADA_PARDON_UNDATED_QUESTION",
"the card question for an UNDATED pardon (G2-REL-A)"),
("canlex/server.py", "CANADA_BEFORE_CRA_QUESTION",
"the card question for a relief dated before the Criminal Records Act as the corpus carries it (G2-REL-B)"),
("canlex/server.py", "CANADA_RELIEF_UNDATED_QUESTION",
"the card question for an undated record suspension on a dated entry (CRA s. 4(1); G2-REL-E)"),
("canlex/server.py", "_RELIEF_OPEN_LINES",
"the conditional lines of a NOT SETTLED reading of a relief that is not only a pardon"),
("canlex/server.py", "CANADA_CARD_LATER_CONVICTION_ACTION",
"the card action for it: a report if it ceased or was revoked, no ground (s. 36(3)(b)) if not"),
("canlex/server.py", "_PARDON_OPEN_LINES", "the conditional lines of a pardon's NOT SETTLED reading"),
("canlex/server.py", "_CANADA_RELIEF_OPEN",
"each NOT SETTLED relief reading's question, action and conditional lines"),
("canlex/server.py", "CANADA_RELIEF_OPEN_NOTE",
"the card notes for a pardon after 2012-03-12 and a record suspension a later conviction may have ended"),
("canlex/server.py", "_canada_card_relief_notes",
"which card note each Canadian entry's relief prints (prerogative, after 2012, later conviction, key)"),
("canlex/server.py", "_canada_entry_disposition",
"a Canadian entry's relief read with its own words, relief key, dates and later convictions"),
("canlex/server.py", "_canada_later_convictions",
"which other Canadian entries may be later convictions that ended a record suspension (REL-5)"),
("canlex/server.py", "CANADA_RELIEF_NOT_APPLIED",
"the flag when relief is not applied to a conviction in Canada"),
("canlex/server.py", "CANADA_PREROGATIVE_NOTE",
"the card note for a prerogative pardon on a conviction in Canada: NOT SETTLED (LEGAL-6, 2026-09-22)"),
("canlex/server.py", "_canada_relief",
"a conviction in Canada reads only its own record suspension, never the record-level relief"),
("canlex/server.py", "_is_canada_entry", "which entry is a conviction in Canada (relief routing)"),
("canlex/server.py", "CARD_HELD", "the record card's HELD FOR REVIEW line"),
("canlex/server.py", "_whole_answer_only",
"which re-runs compared only the whole answer on a result not settled at step 2"),
("canlex/server.py", "DECISIVE_OPEN_NOTE",
"the note that status and relief were not compared reading by reading"),
("canlex/narrative.py", "in_force_at",
"a report provision not in force at commission is never proposed"),
# the act branch on step 1's footing: acquittal readings, ENF 2 s. 3 caveats,
# the Rodriguez Anzola caveat (disposition roadmap T1.5, T1.10; critic, 2026-09-16)
("canlex/commentary.py", "CAVEAT_CLASSES",
"which branch each curated caveat id bears on; after an acquittal no act-branch draft"),
("canlex/commentary.py", "AUTHORITY_CAVEAT_HEAD",
"a case-law caveat on the conviction branch is not settled; both readings"),
("canlex/commentary.py", "caveat_class", "a caveat's class ('act' by default)"),
("canlex/commentary.py", "caveat_in_play", "which caveats print on which step-1 footing"),
("canlex/screening.py", "programme_running",
"when the record says a programme still runs (ENF 2 s. 3: the trial has not concluded)"),
("canlex/screening.py", "duress_words", "when the record says the plea or the act was coerced"),
("canlex/server.py", "STEP1_FOOTING_LABEL", "the footing named on the card's step-1 line"),
("canlex/server.py", "ENF2_RUNNING_LINE",
"ENF 2 s. 3's concluded-trial condition for a programme still running"),
("canlex/server.py", "ACT_NOT_SETTLED_DRAFT",
"the allegation line after an acquittal: NOT SETTLED, no act-branch allegation"),
("canlex/server.py", "ACT_NOT_SETTLED_NEXT",
"no removal path or s. 44 note on the act footing alone after an acquittal"),
("canlex/server.py", "ACT_NOT_SETTLED_WHY", "the card's reason an acquittal answer is not settled"),
("canlex/server.py", "BOTTOM_LINE_ACT_NOT_SETTLED",
"the bottom line after an acquittal: never 'the act branch remains'"),
("canlex/server.py", "CAVEAT_BOTTOM_LINE", "the bottom-line clause of each caveat class"),
("canlex/server.py", "CAVEAT_NOT_IN_PLAY",
"why an entry's caveat is not printed on the record's footing"),
("canlex/server.py", "CARD_POLICY_CAVEAT", "the card Action's POLICY CAVEAT clause (T1.5 and T1.10)"),
("canlex/server.py", "CARD_ACT_NOT_SETTLED_ACTION",
"the card's action after an acquittal: no act-branch report"),
("canlex/server.py", "CARD_RUNNING", "the card's running-programme clause"),
("canlex/server.py", "CARD_DURESS", "the card's coercion clause (Rodriguez Anzola)"),
("canlex/server.py", "CARD_HISTORY_ACT_OPEN",
"the record card's clause for entries whose act branch is not settled"),
("canlex/server.py", "HISTORY_ACT_COUNTED",
"the record-level count reads an acquitted entry as a committed act: one reading"),
("canlex/server.py", "HISTORY_CAVEAT_WHERE", "where a record's caveat readings are printed"),
("canlex/server.py", "IF_ACT_USED",
"the TRP, rehabilitation and step-3 lines are conditional after an acquittal"),
("canlex/server.py", "_footing", "the verdict-to-footing rule"),
("canlex/server.py", "_caveat_label", "the short source label a caveat clause names"),
("canlex/server.py", "_act_branch",
"how step 1 leaves the act branch: not in play, not settled, running, caveat, open"),
("canlex/server.py", "_act_not_settled", "when no act-branch allegation is drafted"),
("canlex/server.py", "_caveat_block", "which caveat lines step 1 prints on the record's footing"),
("canlex/server.py", "_caveat_bottom_lines", "which caveat clauses the bottom line prints"),
("canlex/server.py", "_card_step1_clause", "the card's step-1 footing, running and coercion clauses"),
("canlex/server.py", "_if_act_used", "when the conditional prefix applies"),
("canlex/server.py", "_history_step1_clause", "the record card's per-entry step-1 clause"),
("canlex/server.py", "_history_step1_result", "each entry's step 1 in the record's CANLEX_RESULT"),
# row selection by mechanism and the step-1 headline (disposition roadmap
# T1.11, T6.1; 2026-09-16)
("canlex/server.py", "_select_row",
"which state row governs: covers among same-state rows, other programmes routed to their "
"entry or verdict, not_for, a mechanism mismatch, a vacatur ground not stated"),
("canlex/server.py", "_readings_agree",
"a mismatch is not raised when the entry's reading and the row share one footing"),
("canlex/server.py", "_row_words",
"the record words row selection reads: refused segments and negated words dropped"),
("canlex/server.py", "_resolve_step1",
"step 1 on the matched entries: routed entry, floored verdict, then the question flags"),
("canlex/server.py", "ROW_MISMATCH_LINES", "the ROW NOT APPLIED wording of each row-selection outcome"),
("canlex/server.py", "ROW_MISMATCH_CARD", "the card clause when a state row is not applied"),
("canlex/server.py", "ROW_MISMATCH_TIER", "the memo's step-1 tier when a state row is not applied"),
("canlex/server.py", "ROW_PROGRAM_NOTE", "how an other-programme note is appended"),
("canlex/server.py", "_row_mismatch_line", "which ROW NOT APPLIED line or card clause prints"),
("canlex/server.py", "_row_mismatch_result", "the row_mismatch field of CANLEX_RESULT"),
("canlex/server.py", "STEP1_HEADLINE", "canlex_us_disposition's first line: the governing verdict"),
("canlex/server.py", "STEP1_GOVERNS", "what governs step 1: a row, an entry, the wording, a routing"),
("canlex/server.py", "STEP1_CONSEQUENCE", "the footing a step-1 verdict puts the record on"),
("canlex/server.py", "STEP1_CONSEQUENCE_ACT",
"the act-branch clause of the consequence (acquittal, ENF 2 caveat, running programme)"),
("canlex/server.py", "STEP1_DECIDES", "the WHAT DECIDES IT line"),
("canlex/server.py", "STEP1_DECIDES_TEXT", "what decides step 1 in each case"),
("canlex/server.py", "ENTRY_LEVEL_VERDICT", "the entry verdict, demoted and labelled"),
("canlex/server.py", "OTHER_STATES_COUNT", "the other states as a count when a state is given"),
("canlex/server.py", "ROW_NOT_APPLIED_HEAD", "the heading of a state row that is not applied"),
("canlex/server.py", "FRAMEWORK_POINTER",
"the conviction framework in brief: Burgon, Barnett, Saini para 24, s. 33 and Mugesera "
"para 114, s. 36(3)(d)"),
("canlex/server.py", "_step1_headline", "the STEP 1 FOR THIS RECORD, CONSEQUENCE and WHAT DECIDES IT lines"),
("canlex/server.py", "_deciding_sentence", "which sentence of a curated text is shown as deciding"),
# the review of batch 1 (fixer, 2026-09-16): later judgments, refused offers and
# transfers, split counts by offence, penal orders not final, the place floor,
# carried programme caveats, both-footing cards
("canlex/screening.py", "_negated_at", "a negation right before a phrase ('not adjudicated guilty')"),
("canlex/screening.py", "_adjudication_after",
"which later words are an adjudication of guilt after a programme revocation (never negated; a "
"finding of guilt only after the programme itself was revoked, struck or terminated)"),
("canlex/screening.py", "_later_judgment",
"a later conviction the record reports after another disposition is read (never another charge)"),
("canlex/screening.py", "_later_outcome",
"whether the words after a trial set or a new trial report an outcome"),
("canlex/screening.py", "_split_counts",
"the split-counts question: count words, a plea to a count, an unreported count, outcomes naming "
"different offences"),
("canlex/screening.py", "_penal_order_open",
"a penal order the record does not show final (an objection, a setting-aside, an acquittal)"),
("canlex/server.py", "_with_program_caveats",
"the routed entry carries the policy caveats a programme names (CPL 160.50: the acquittal readings)"),
("canlex/server.py", "ROW_PROGRAM_QUESTION", "a programme's deciding question on the ROW NOT APPLIED line"),
("canlex/server.py", "PLACE_NOT_NAMED_WHERE", "the places a gate lists, said with the place flag"),
("canlex/server.py", "CARD_BOTH_ACT_NOT_SETTLED_ACTION",
"the card action on both footings after an acquittal caveat: the conditional conviction report"),
("canlex/server.py", "CARD_BOTH_ACT_NOT_SETTLED_WHY", "the card result on both footings with the caveat"),
("canlex/server.py", "CARD_BOTH_QUESTION", "the card's fallback deciding question"),
("canlex/server.py", "CARD_ROUTED_ACT_NOT_SETTLED_ACTION",
"the card action for a routed record carrying the acquittal readings (was it an acquittal?)"),
("canlex/server.py", "CARD_ROUTED_ACT_NOT_SETTLED_WHY", "the card result for that routed record"),
("canlex/server.py", "CARD_HISTORY_COUNT_ONE_READING",
"the history card: the count reads an acquitted entry as a committed act on one reading only"),
# the review of batch 1, round 2 (fixer, 2026-09-16): refusals bound to their
# object, a later conviction on another matter or a question, trial-set and
# new-trial outcomes, transfers that took effect, judgments that are not guilt,
# dismissals of what is not a charge, penal orders shown final, relief ordering,
# place-gated names, the CPL state inference, question cards
("canlex/screening.py", "_REFUSAL_BREAK", "where the refused-relief pass breaks a record (brackets, a slash)"),
("canlex/screening.py", "_refused_spans",
"a refusal cuts only the relief, programme or offer it binds to (never a test, a charge or advice)"),
("canlex/screening.py", "_adjudication_ok",
"a later judgment that is not this programme's: another person or matter, costs, a named offence"),
("canlex/screening.py", "_PRIOR_LABEL", "a 'PRIOR:' label: the judgment after it is earlier in time"),
("canlex/screening.py", "_deferral_count_split", "a deferral on one count and an adjudication on another"),
("canlex/screening.py", "deferral_count_split", "the same, on the record's words, for the server"),
("canlex/screening.py", "_adult_court",
"a transfer to adult court that took effect, or not; the case returned to juvenile court"),
("canlex/screening.py", "_dismissal_after",
"a dismissal after conviction words: another named charge (split counts) or the question"),
("canlex/screening.py", "_penal_order_state",
"a penal order shown final, open, or objected to with a stated outcome (acquittal, conviction)"),
("canlex/screening.py", "_new_trial_skip",
"a new-trial phrase that orders no new trial: negated, refused, another person's, undone"),
("canlex/screening.py", "_BARE_GUILTY", "a bare GUILTY segment read as an adjudication after a revocation"),
("canlex/server.py", "_FOREIGN_WORD_ACRONYMS", "acronym names never matched for a non-US record ('ALS')"),
("canlex/server.py", "_RELIEF_ENTRIES", "the relief entries, by id, for ranking on any dataset"),
("canlex/server.py", "_is_relief_entry", "which entries rank as relief"),
("canlex/server.py", "_acquittal_first", "an acquittal ranks ahead of a dismissal the words also reach"),
("canlex/server.py", "_GATED_OBJECT", "the object nouns a place-gated verdict name may not follow"),
("canlex/server.py", "_gated_object_before",
"a place-gated name that describes an object ('ALLEGATION NOT PROVEN') is not a verdict"),
("canlex/server.py", "_SPLIT_DEFERRAL_ENTRIES",
"the deferral entries the split-counts question answers for when a deferred count is split"),
("canlex/server.py", "_CPL_CITE", "a New York CPL cite in the record's words"),
("canlex/server.py", "STATE_INFERRED_CPL", "the note that the state was inferred from a CPL cite"),
("canlex/server.py", "CARD_QUESTION_RESULT", "the card result on both footings with a wording question"),
("canlex/server.py", "CARD_QUESTION_ACTION",
"the card action on both footings with a wording question: each branch's report conditionally"),
("canlex/server.py", "CARD_QUESTION_ACT_CAVEAT", "the act side's policy caveat in that action"),
("canlex/server.py", "CARD_QUESTION_ACT_OPEN", "the act side NOT SETTLED after an acquittal in that action"),
("canlex/server.py", "CARD_QUESTION_NO_ACT", "the act side with no act-branch ground in that action"),
("canlex/server.py", "CARD_HISTORY_QUESTION", "the history card's clause for entries a wording question leaves open"),
("canlex/server.py", "CARD_HISTORY_QUESTION_ACTION", "the history card action when only such entries engage"),
("canlex/server.py", "CARD_HISTORY_QUESTION_CLAUSE", "one such entry's conditional clause"),
("canlex/server.py", "REVERSAL_QUESTION",
"a reversal on appeal whose words state no outcome: acquittal, dismissal or new trial?"),
("canlex/server.py", "_REVERSAL_OUTCOME_WORDS", "the words that state a reversal's outcome"),
("canlex/server.py", "_step1_question", "the deciding step-1 question the cards name"),
("canlex/server.py", "_question_act_text", "the non-conviction side of a conditional card action"),
# the review of batch 1, round 3 (fixer, 2026-09-16): relief after a dismissal, the
# verb kept for an adult transfer, procedural words no disposal, no-charge names
# beside a conviction, offers not completed, count-scoped new trials and trial
# settings, supervision violations only, labelled splits, findings on violations and
# enhancements, deferred sentences across field breaks, penal orders not shown final,
# places noted, routed and unknown card wording, held moves
("canlex/screening.py", "_weak_back",
"a bare 'INDICTED' or 'LATER CHARGED' brings the matter back only with no other offence named"),
("canlex/screening.py", "_MAJOR_BREAK", "where an outcome-and-offence segment ends (';', ',', '|')"),
("canlex/screening.py", "_offence_label",
"a segment that is only an offence label joined to a dismissal (split counts)"),
("canlex/screening.py", "_cut_finding_labels",
"a not-guilty finding on a violation, enhancement or specification is not the charge's verdict"),
("canlex/screening.py", "_other_case_conviction",
"a conviction on another charge or case given as a dismissal's reason is not this charge's"),
("canlex/server.py", "_NO_CHARGE_NAMES", "the no-charge names that yield to a conviction elsewhere"),
("canlex/server.py", "_NO_CHARGE_OBJECT", "the objects that put a no-charge phrase on another matter"),
("canlex/server.py", "_NO_CHARGE_FILE_OBJECT", "a class of charge declined ('DECLINED TO FILE FELONY')"),
("canlex/server.py", "_NO_CHARGE_OBJECT_PROCEDURAL",
"a no-charge phrase's procedural object ('REQUIRED BY PROBATION') is never a charge's outcome"),
("canlex/server.py", "_no_charge_yields",
"a no-charge name never answers a record with conviction words in another segment"),
("canlex/server.py", "_SEGMENT_BOUND_NAMES", "the deferred-sentence names read only as adjacent words"),
("canlex/server.py", "_segment_bound_ok", "a deferred sentence never read across a field break"),
("canlex/server.py", "_GATED_OBJECT_ADMITTED",
"the object nouns a gated verdict name may not follow for a record from the gated place"),
("canlex/server.py", "_name_pos", "where a matched name stands in the record's words (relief ordering)"),
("canlex/server.py", "_deferred_sentence_first",
"a named deferred sentence with a state row ranks ahead of a deferred adjudication without one"),
("canlex/server.py", "_gated_readings_non_conviction",
"a place-gated match whose every reading is a non-conviction keeps its verdict (place noted)"),
("canlex/server.py", "_MEXICAN_STATES", "a Mexican state as the state field makes the record Mexican"),
("canlex/server.py", "COUNTRY_INFERRED_MEXICO", "the note that the country was inferred as Mexico"),
("canlex/server.py", "STEP1_UNKNOWN_QUESTION", "the card says step 1 matched no curated entry"),
("canlex/server.py", "ACT_NOT_SETTLED_DRAFT_ROUTED",
"the memo's act-branch line for a routed programme: if the termination was an acquittal"),
("canlex/server.py", "CARD_HISTORY_COUNT_ONE_READING_ROUTED",
"the history card count clause for a routed programme: if it was an acquittal"),
("canlex/server.py", "CARD_HISTORY_ACT_OPEN_ROUTED",
"the history card clause for a routed programme: if it was an acquittal"),
("canlex/server.py", "_held_moved", "a name moved to a held entry: the composed release says so"),
# the review of batch 1, round 4 (fixer, 2026-09-18): acquittals beside sealings and
# vacaturs, offers not completed, proceedings reinstated, plea-downs, prior convictions
# noted, sentencing continuances, warrants on violations, joined relief and dismissal,
# appeals allowed, refused set-aside motions, negated conviction words, stays of
# execution, count-scoped retrials, the RP-04 held guard, the Canadian NCR verdict
("canlex/screening.py", "_PROGRAMME_WORDS",
"the programme words the revocation rules and the judgment-upon-revocation cue bind to"),
("canlex/screening.py", "_NEGATED_CONVICTION_WORD",
"the negated conviction words the curated entries never read ('NOT CONVICTED', 'NO CONVICTION')"),
("canlex/screening.py", "_cut_violation_warrant",
"a warrant on a supervision violation after conviction words enforces the sentence: no pending charge"),
("canlex/screening.py", "_cut_other_dismissals",
"a dismissal labelled costs, a warrant or a bond, or of another case, beside conviction words"),
("canlex/screening.py", "_relief_dismissal_joined",
"a sealing or expungement joined to the dismissal that came first, or 'no conviction': no question"),
("canlex/screening.py", "relief_dismissal_joined", "the same, on the record's words, for the server"),
("canlex/server.py", "_place_key", "the place key a record's state or country is matched to a gate with"),
("canlex/server.py", "_place_spellings",
"the place keys one place field yields: split on commas, slashes and brackets, 'the' and 'S.' read"),
("canlex/server.py", "_ACQUITTAL_AHEAD_OF",
"the entries an acquittal ranks ahead of when the record carries no conviction words"),
("canlex/server.py", "_ACQUITTAL_WORDS", "the acquittal words the relief ordering reads on any dataset"),
("canlex/server.py", "STEP1_FACT_SPECIFIC_QUESTION",
"the card's fallback question for a curated FACT-SPECIFIC entry that states none"),
("canlex/server.py", "ALLEGATION_HELD", "the memo's draft line when held content is reached: nothing drafted"),
("canlex/server.py", "CARD_HELD_ACTION", "the card action when held content is reached: no report drafted"),
("canlex/server.py", "CARD_HISTORY_HELD", "the history card's clause for entries that reach held content"),
("canlex/server.py", "CANADA_PREROGATIVE_QUESTION",
"the Canadian card's question when a prerogative pardon is named (LEGAL-6, 2026-09-22)"),
("canlex/server.py", "CANADA_UNSETTLED_QUESTION", "the Canadian card's question when the words may not be a conviction"),
("canlex/server.py", "CANADA_CARD_UNSETTLED_ACTION",
"the Canadian card's action when the words may not be a conviction: each branch conditionally"),
("canlex/rehab.py", "_CANADA_NCR", "a Canadian NCR verdict in the record's words"),
("canlex/rehab.py", "NCR_TEXT", "the Canadian NCR verdict is no conviction (Criminal Code s. 672.35)"),
("canlex/rehab.py", "_CANADA_NEW_TRIAL", "a Canadian new trial ordered: the charge is pending again"),
# the review of batch 1, round 5 (fixer, 2026-09-18): the second verification's blockers and
# majors -- bail releases, negated conviction words, stets reopened, adult transfers in
# another case, diversions not completed, sentencing continuances, remands, set-asides on
# appeal or for legal error, count splits, revocations followed by a term, summonses
# reissued, granted motions to adjudicate, prosecution appeals, penal-order finality,
# relief pending, prior matters, the composed release's held mechanisms
("canlex/screening.py", "_DISPOSITION_ABBREVIATIONS",
"the record abbreviations expanded before the cues read the words ('CNV', 'NG', 'ACQ', 'JOA', 'DISP BY PLEA')"),
("canlex/screening.py", "_MILITARY_CUE",
"a military record cue: specifications are counts and a not-guilty specification finding is the verdict"),
("canlex/screening.py", "_TERM_ONLY", "a bare term segment skipped between a programme and its revocation"),
("canlex/screening.py", "_REFUSAL_OBJECT_KEPT",
"what a refused motion to set aside a dismissal, an acquittal or relief keeps: that outcome's word"),
("canlex/screening.py", "set_aside_appellate",
"a set-aside in one segment with an appellate word is never the rehabilitative set-aside entry's"),
("canlex/screening.py", "_cut_prior_segments",
"a segment reporting an earlier matter ('PRIOR: CONVICTED 2010') is not this record's"),
# the code audit of 2026-09-21 (tools-infra-02/03): every function FastMCP publishes --
# its docstring IS the tool's description the client model reads, and predeploy now
# fingerprints that docstring and the decorator's keywords -- and the officer-facing
# notes the retrieval and lookup tools print
("canlex/server.py", "canlex_search_legislation",
"the search tool's published description and its result notes"),
("canlex/server.py", "canlex_get_section", "the section lookup tool's published description"),
("canlex/server.py", "canlex_us_equivalency",
"the equivalency tool's published description and its memo"),
("canlex/server.py", "canlex_rehabilitation",
"the rehabilitation tool's published description and its memo"),
("canlex/server.py", "canlex_whats_new", "the what's-new tool's published description"),
("canlex/server.py", "canlex_citing", "the citing tool's published description"),
("canlex/server.py", "canlex_toc", "the table-of-contents tool's published description"),
("canlex/server.py", "canlex_case",
"the citator tool's published description (which courts a neutral citation resolves for)"),
("canlex/server.py", "_res_grounding", "the grounding resource"),
("canlex/server.py", "_res_corpus", "the corpus inventory resource"),
("canlex/server.py", "_res_conviction_framework", "the conviction methodology resource"),
("canlex/server.py", "_res_equivalency_framework", "the equivalency methodology resource"),
("canlex/server.py", "_res_rehabilitation_methodology",
"the rehabilitation methodology resource"),
("canlex/rehab.py", "methodology_text", "the rehabilitation methodology resource body"),
("canlex/server.py", "WEAK_MATCH_NOTE", "the RETRIEVAL CAUTION printed over a weak match"),
("canlex/server.py", "_guidance_age_note", "the warning printed over guidance older than "
"_GUIDANCE_AGE_YEARS"),
("canlex/server.py", "_guidance_label",
"the provenance label under guidance: publisher, legal force, status"),
("canlex/server.py", "_is_jurisprudential_guide",
"which IRB decisions are labelled Chairperson's jurisprudential guides"),
("canlex/server.py", "_TRAN_DECIDED", "the date Tran was decided, for the pre-Tran note"),
("canlex/screening.py", "_set_aside_legal_error",
"a set-aside for a stated legal-error ground reads as a vacated conviction (the reversal entry)"),
("canlex/screening.py", "_cut_pending_other",
"another matter's charge pending, or a bare 'case pending', after conviction words is cut"),
# ---- audit follow-up 2026-09-21, group B (reviewed) ----
("canlex/server.py", "GROUNDING_BRIEF",
"the brief answering instructions canlex_get_section(grounding='brief') prints"),
("canlex/server.py", "_res_corpus_view",
"the canlex://corpus/{view} resource: the corpus inventory, compact or one doc_type"),
# ---- end group B (reviewed) ----
# ---- verification round G1 (2026-09-22): the quantity reader is an ALLOWLIST ----
("canlex/screening.py", "_DOT_GROUPED",
"a dot followed by three digits reads two ways and names no amount (Q9)"),
("canlex/screening.py", "QUANTITY_NEUTRAL_WORDS",
"the only words besides the pairing's own that may stand beside a settling amount"),
("canlex/screening.py", "_REST_PUNCT", "the only characters that may stand outside the amount"),
("canlex/screening.py", "_UNIT_TOKENS", "unit words: a term naming one lends no words"),
("canlex/screening.py", "_plain_chars", "no digit or symbol outside the one amount"),
("canlex/screening.py", "quantity_terms", "the pairing words the allowlist is derived from"),
("canlex/screening.py", "_term_pieces", "content words and in-order runs of the terms"),
("canlex/screening.py", "offence_words_only",
"the allowlist grammar: content words, neutral words, function words only inside a run"),
("canlex/screening.py", "_cut_off", "a record cut off after the amount does not settle"),
("canlex/screening.py", "_liability_cue",
"the one inchoate or party cue read (inchoate(); set aside beside an amount)"),
("canlex/screening.py", "_offence_tokens",
"the liability cue and the military jurisdiction set aside before the allowlist"),
("canlex/screening.py", "settled_quantity",
"the only amount that settles a quantity limb (Q1-3, Q7, Q8, Q11)"),
("canlex/screening.py", "SCHEDULE_VII_FORMS",
"cannabis forms former CDSA Schedule VII sets no amount for (Q5)"),
("canlex/screening.py", "SCHEDULE_VII_FORM_NOTE", "the Schedule VII wording quoted for them (Q5)"),
("canlex/screening.py", "SCHEDULE_VII_WORDS",
"the Schedule VII substance words that may stand beside a settling amount"),
("canlex/screening.py", "schedule_vii_forms", "which Schedule VII forms the record names (Q5)"),
("canlex/screening.py", "QUANTITY_HELD_NOTE", "why a split part's amount is not settled (Q4)"),
("canlex/screening.py", "_QUANTITY_HELD", "a split part's amount is held open (Q4)"),
("canlex/screening.py", "quantity_held", "a split part's amount is held open (Q4)"),
("canlex/screening.py", "quantity_is_held", "a split part's amount is held open (Q4)"),
("canlex/screening.py", "plain_offence",
"a part of a split string that is an offence of its own and nothing else (Q4)"),
("canlex/screening.py", "SPLIT_AMOUNT_CAUTION",
"the refusal's caution not to enter a qualified amount alone (Q4)"),
("canlex/screening.py", "split_amount_caution", "when the refusal adds that caution (Q4)"),
("canlex/screening.py", "QUANTITY_EXACT_INSTRUCTION",
"write the EXACT amount; a bound or an estimate cannot be written as one (Q10/Q13)"),
("canlex/screening.py", "_form_note", "the Schedule VII note for the forms named"),
("canlex/screening.py", "_no_exact_amount", "why no amount settles the quantity"),
("canlex/screening.py", "quantity_open_why", "the memo's reason the quantity is open"),
("canlex/screening.py", "quantity_question", "the 'quantity' need's question"),
("canlex/screening.py", "POSSESSION_LIMIT_PAIRINGS",
"which pairing's 'no equivalent' rests on the possession limits (Q6)"),
("canlex/screening.py", "SCHEDULE_VIII_KG",
"former CDSA Schedule VIII: cannabis resin 1 g, cannabis (marihuana) 30 g (Q6)"),
("canlex/screening.py", "_RESIN_WORDS", "the words read as cannabis resin (Q6)"),
("canlex/screening.py", "POSSESSION_LIMIT_QUESTION",
"former CDSA s. 4(4)/(5) and Cannabis Act s. 8(1)(a)/(b), 8(2)(a) wording (Q6)"),
("canlex/screening.py", "possession_limit_open",
"when possession words do not show the limits: DEPENDS, not a settled NO (Q6)"),
("canlex/server.py", "_possession_limit_needs", "the possession-limit question as a need (Q6)"),
# ---- verification round H1 (2026-09-22): the holes in the quantity allowlist ----
("canlex/screening.py", "_SUBSTANCE_WORDS",
"the words that name only the substance or its form: no offence of their own (GQ-1/GQ-3)"),
("canlex/screening.py", "_FOLD_KEEP", "the characters the folder keeps (GQ-4)"),
("canlex/screening.py", "fold_erases_word",
"a word the reader cannot read opens the quantity, never vanishes (GQ-4)"),
("canlex/screening.py", "quantity_limb_terms",
"the allowlist is the QUANTITY limbs' own words; a production word opens it (GQ-2)"),
("canlex/screening.py", "_CLAUSE_BOUNDARY",
"a newline, a full stop or a colon ends an offence clause (GQ-3)"),
("canlex/screening.py", "_term_heads", "a term's head word; two of one head are two counts (GQ-3)"),
("canlex/screening.py", "_substance_groups",
"a second substance group has no amount of its own (GQ-3)"),
("canlex/screening.py", "one_offence_clause",
"the amount must sit in ONE offence clause to settle a limb (GQ-3)"),
("canlex/screening.py", "_QUANTITY_WORDS",
"the nouns a fact about the drug's amount is written with (GQ-5)"),
("canlex/screening.py", "quantity_context_open",
"an amount in the facts or the disposition that the offence text does not state (GQ-5)"),
("canlex/screening.py", "QUANTITY_CONTEXT_NOTE",
"why the facts or the disposition leave the quantity open (GQ-5)"),
("canlex/server.py", "_quantity_context",
"which of the entry's words are read for another amount (GQ-5)"),
("canlex/server.py", "CARD_POSSESSION_LIMIT_BRANCH",
"how a possession-limit entry is named on the record card (GQ-6)"),
("canlex/server.py", "CARD_POSSESSION_LIMIT_NOTE",
"the possession-limit question printed on the card (GQ-6)"),
("canlex/server.py", "_possession_limit_notes",
"when the card prints the possession-limit question (GQ-6)"),
# ---- verification round J2 (2026-09-22): Q12, REL-15, REL-16 ----
("canlex/screening.py", "_Q_ISO_DATE", "an ISO date beside the amount is no amount (Q12)"),
("canlex/screening.py", "_Q_SLASH_DATE", "a slash date beside the amount is no amount (Q12)"),
("canlex/screening.py", "_Q_DATE_LABEL",
"the words a record labels a date with, removed with it (Q12)"),
("canlex/screening.py", "_Q_DATE", "the dates the allowlist removes before reading (Q12)"),
("canlex/screening.py", "_Q_DOCKET", "a docket, case or cause number is no amount (Q12)"),
("canlex/screening.py", "_Q_COUNT_ID",
"WHICH count this entry is, removed; 'N counts' is NOT, it says the offence "
"happened more than once (Q12)"),
("canlex/screening.py", "_Q_SUBSECTION", "a statute subsection, never a word in brackets (Q12)"),
("canlex/screening.py", "_Q_SECTION", "a statute section number (Q12)"),
("canlex/screening.py", "_Q_TITLE", "a statute title number before the designator (Q12)"),
("canlex/screening.py", "_Q_BARE_CITATION",
"a citation written with no designator: a dotted section with subsections (Q12)"),
("canlex/screening.py", "_MIXED_HYPHEN",
"'1-1/2' read as the mixed number '1 1/2', the largest reading (Q12)"),
("canlex/screening.py", "_Q_CODE_DESIGNATORS",
"the US statute-code designators a citation may be written with: an explicit "
"allowlist, so an offence name or another legal system's code is no citation (K2)"),
("canlex/screening.py", "_citation_designators",
"which statute designators are read as a citation: the alias table's own, "
"restricted to the _Q_CODE_DESIGNATORS allowlist (Q12, K2)"),
("canlex/screening.py", "_citation_spans", "where the citations sit in the record (Q12)"),
("canlex/screening.py", "quantity_strip",
"the record-keeping tokens removed before the quantity allowlist reads the words (Q12)"),
("canlex/rehab.py", "_RS_FR_GRANT",
"the French grant words the Criminal Records Act uses ('accordee', 'ordonnee') (REL-16)"),
("canlex/rehab.py", "_RS_FR_NAME",
"the Act's French names: 'suspension du casier' and the ACCENTED "
"'rehabilitation' -- the unaccented spelling is an ordinary English word and "
"names the relief only before a French grant word (REL-16, K2)"),
("canlex/rehab.py", "_CANADA_RS_NAME_READ",
"which relief each French name is: the record suspension, or the pre-2012 pardon (REL-16)"),
("canlex/rehab.py", "rs_name_read",
"a French naming clause reads as its English twin, post-2012 pardon reading included (REL-16)"),
("canlex/rehab.py", "_CANADA_RS_PREROGATIVE_CLAUSE",
"a clause that is nothing but a prerogative pardon (REL-15)"),
("canlex/rehab.py", "prerogative_clause",
"such a clause never takes a standing record suspension away: IRPA s. 36(3)(b) turns "
"on the record suspension (REL-15)"),
)
# ---- plumbing ---------------------------------------------------------------
# Every canlex definition a registered name REACHES (tools/predeploy.py
# CodeTree) that is not itself registered: search, indexing, loading, parsing,
# formatting and data-structure helpers with no legal wording or routing of
# their own. The review gate fingerprints each registered name together with
# these, so a change to one still holds its registered callers; the list
# exists so that a NEW helper a registered name starts to rely on must be
# classified -- registered above if it carries legal wording or routing,
# listed here if not (tests/test_reviewed_code.py fails until it is).
PLUMBING = (
# canlex/citator.py and the lookup / formatting helpers the published tools
# reach (the code audit of 2026-09-21: every mcp.tool/prompt/resource
# function is registered, so what they reach is classified here)
("canlex/citator.py", "API"), ("canlex/citator.py", "Citator"),
("canlex/citator.py", "KEY_FILE"), ("canlex/citator.py", "_CACHE_FILE"),
("canlex/citator.py", "_CANLII_SEG"), ("canlex/citator.py", "_CASE_URL"),
("canlex/citator.py", "_DBMAP_FILE"), ("canlex/citator.py", "_DB_URL"),
("canlex/citator.py", "_MAX_LIST"), ("canlex/citator.py", "_NEUTRAL"),
("canlex/citator.py", "_PLACEHOLDER"), ("canlex/citator.py", "_PROVINCE_SEG"),
("canlex/citator.py", "_THROTTLE"), ("canlex/citator.py", "_load_json"),
("canlex/citator.py", "api_key"), ("canlex/citator.py", "canlii_url_from_citation"),
("canlex/server.py", "DocType"), ("canlex/server.py", "HEDGE_THRESHOLD"),
("canlex/server.py", "_ARABIC"), ("canlex/server.py", "_CITATOR"),
("canlex/server.py", "_GUIDANCE_AGE_YEARS"), ("canlex/server.py", "_PART_NOTE"),
("canlex/server.py", "_ROMAN"), ("canlex/server.py", "_SCHEDULE_FORM"),
("canlex/server.py", "_SECTION_PREFIX"), ("canlex/server.py", "_YEAR"),
("canlex/server.py", "_assemble"), ("canlex/server.py", "_citator"),
("canlex/server.py", "_clean_citation"), ("canlex/server.py", "_format_case"),
("canlex/server.py", "_format_section"), ("canlex/server.py", "_log_query"),
("canlex/server.py", "_normalize_section"), ("canlex/server.py", "_not_found"),
("canlex/server.py", "_schedule_label"), ("canlex/server.py", "_stated"),
# canlex/authorities.py -- loading the registry and the corpus, cite
# folding, sentence splitting (the wording and choices are REVIEWED above)
("canlex/authorities.py", "FILE"), ("canlex/authorities.py", "PATH"),
("canlex/authorities.py", "_load"), ("canlex/authorities.py", "load"),
("canlex/authorities.py", "lookup"), ("canlex/authorities.py", "_fold"),
("canlex/authorities.py", "_norm"), ("canlex/authorities.py", "_QUOTES"),
("canlex/authorities.py", "resolve"), ("canlex/authorities.py", "chunk"),
("canlex/authorities.py", "_corpus"), ("canlex/authorities.py", "_corpus_file"),
("canlex/authorities.py", "_wanted_ids"), ("canlex/authorities.py", "_file_for"),
("canlex/authorities.py", "decision_present"), ("canlex/authorities.py", "_decision_keys"),
("canlex/authorities.py", "_KEYS_SEEN"), ("canlex/authorities.py", "_sentence"),
("canlex/authorities.py", "_boundaries"), ("canlex/authorities.py", "_ABBREV"),
("canlex/authorities.py", "_BOUNDARY"), ("canlex/authorities.py", "_act_sections"),
("canlex/server.py", "_index_chunks"), ("canlex/screening.py", "_code_prefix"),
# canlex/commentary.py
("canlex/commentary.py", "GUIDANCE_HEADING"), ("canlex/commentary.py", "_FLAG"),
("canlex/commentary.py", "_SENTENCE"), ("canlex/commentary.py", "_VERIFY"),
("canlex/commentary.py", "_row_lines"), ("canlex/commentary.py", "_split_verify"),
("canlex/commentary.py", "_vlabel"), ("canlex/commentary.py", "_sources"),
# canlex/config.py
("canlex/config.py", "DATA_DIR"), ("canlex/config.py", "PROCESSED_DIR"),
("canlex/config.py", "ROOT"),
# canlex/embed.py
("canlex/embed.py", "EMB_REPO"), ("canlex/embed.py", "Embedder"),
("canlex/embed.py", "_MAX_TOKENS"), ("canlex/embed.py", "_PASSAGE_PREFIX"),
("canlex/embed.py", "_POOLING"), ("canlex/embed.py", "_QUERY_PREFIX"),
# canlex/index.py
("canlex/index.py", "ACT_HINT"), ("canlex/index.py", "APPENDIX_CAP"),
("canlex/index.py", "B"), ("canlex/index.py", "BACKMATTER_PENALTY"),
("canlex/index.py", "CANDIDATES"), ("canlex/index.py", "COURT_HINT"),
("canlex/index.py", "INAPPLICABLE_PENALTY"), ("canlex/index.py", "K1"),
("canlex/index.py", "LegislationIndex"), ("canlex/index.py", "MEMO_PENALTY"),
("canlex/index.py", "MN_CAP"), ("canlex/index.py", "MN_WEIGHT"),
("canlex/index.py", "NIF_PENALTY"), ("canlex/index.py", "POOL_CAP"),
("canlex/index.py", "PRIMARY_DOC_TYPES"), ("canlex/index.py", "RECALL_CAP"),
("canlex/index.py", "REG_PENALTY"), ("canlex/index.py", "REPEALED_PENALTY"),
("canlex/index.py", "RERANK_POOL"), ("canlex/index.py", "RRF_K"),
("canlex/index.py", "SOURCE_CAP"), ("canlex/index.py", "W_SEM"),
("canlex/index.py", "_APPENDIX_HEAD"), ("canlex/index.py", "_APPENDIX_REF"),
("canlex/index.py", "_COURT_HINTS"), ("canlex/index.py", "_DECISION_WORDS"),
("canlex/index.py", "_EMPLOYMENT_WORDS"), ("canlex/index.py", "_FLAT_MEMO_CODES"),
("canlex/index.py", "_FR_HINT"), ("canlex/index.py", "_FR_WORDS"),
("canlex/index.py", "_FR_ACCENT_COMPANIONS"),
("canlex/index.py", "_INAPPLICABLE"), ("canlex/index.py", "_MARKER"),
("canlex/index.py", "_MEMO_CITE"), ("canlex/index.py", "_PIECE_ID"),
("canlex/index.py", "_PROMOTION_GATES"), ("canlex/index.py", "_SECTION_REF"),
("canlex/index.py", "_SECTION_NUM"), ("canlex/index.py", "_SECTION_NUMS"),
("canlex/index.py", "_STEMMER"), ("canlex/index.py", "_STEM_CACHE"),
("canlex/index.py", "_STEM_NORMALIZE"), ("canlex/index.py", "_TOKEN"),
("canlex/index.py", "_XREF"), ("canlex/index.py", "_applicability"),
("canlex/index.py", "_fold_accents"), ("canlex/index.py", "_part_is"),
("canlex/index.py", "_piece_no"), ("canlex/index.py", "_provision_units"),
("canlex/index.py", "_section_refs"), ("canlex/index.py", "_stem"),
("canlex/index.py", "court_hints"), ("canlex/index.py", "employment_query"),
("canlex/index.py", "promotion_allowed"), ("canlex/index.py", "query_lang"),
("canlex/index.py", "tokenize"), ("canlex/index.py", "topical_title"),
# canlex/index.py -- step A12: guidance sub-tier knobs and flags (like
# MEMO_PENALTY above), the criminality-route mechanics (its two content
# constants are REVIEWED), and the read-next key resolution (the legal
# content -- WHICH guidance an entry names -- lives in the review-gated
# curated JSON, not here)
("canlex/index.py", "APPLICANT_PENALTY"), ("canlex/index.py", "ATIP_PENALTY"),
("canlex/index.py", "ATIP_STATUS"), ("canlex/index.py", "COMMENTARY_PENALTY"),
("canlex/index.py", "CRIMINALITY_ROUTE"), ("canlex/index.py", "READ_NEXT_CAP"),
("canlex/index.py", "SEE_ALSO_DRAFT"), ("canlex/index.py", "STATE_ONE_SOURCE"),
("canlex/index.py", "_APPLICANT_CODES"), ("canlex/index.py", "_CRIM_MARKERS"),
("canlex/index.py", "_S36_3_WORDS"), ("canlex/index.py", "_S36_CUES"),
("canlex/index.py", "_norm_text"), ("canlex/index.py", "_read_json"),
("canlex/index.py", "_see_also_match"), ("canlex/index.py", "_see_also_spec"),
("canlex/index.py", "criminality_allowlist"), ("canlex/index.py", "criminality_query"),
("canlex/index.py", "curated_see_also"), ("canlex/index.py", "draft_see_also"),
# canlex/rehab.py
("canlex/rehab.py", "BASES"), ("canlex/rehab.py", "CANADA_MODES"),
("canlex/rehab.py", "COUNTS"), ("canlex/rehab.py", "STATUSES"),
("canlex/rehab.py", "_LIMB_NUMS"), ("canlex/rehab.py", "_MAX_WORLDS"),
("canlex/rehab.py", "_X"), ("canlex/rehab.py", "_as_date"), ("canlex/rehab.py", "_dedupe"),
("canlex/rehab.py", "_limb_chunk"), ("canlex/rehab.py", "_months"),
("canlex/rehab.py", "_need"), ("canlex/rehab.py", "_para_label"),
("canlex/rehab.py", "_public"), ("canlex/rehab.py", "_today_code"),
("canlex/rehab.py", "_s17_public"),
# canlex/rerank.py
("canlex/rerank.py", "MAX_TOKENS"), ("canlex/rerank.py", "RERANK_ONNX"),
("canlex/rerank.py", "RERANK_REPO"), ("canlex/rerank.py", "Reranker"),
("canlex/rerank.py", "_MAX_DOC_CHARS"), ("canlex/rerank.py", "_MAX_QUERY_TOKENS"),
("canlex/rerank.py", "make_ort_session"),
# canlex/screening.py
("canlex/screening.py", "Expansion"), ("canlex/screening.py", "STOP"),
("canlex/screening.py", "TOKEN_CAP"), ("canlex/screening.py", "_ALIAS_TABLE"),
("canlex/screening.py", "_CANNABIS_CONCENTRATE"),
("canlex/screening.py", "_CANNABIS_SLANG"), ("canlex/screening.py", "_DATE"),
("canlex/screening.py", "_DOTTED"),
("canlex/screening.py", "_PARA_CONTEXT"),
("canlex/screening.py", "_QUANTITY"), ("canlex/screening.py", "_SPLIT_CAP"),
("canlex/screening.py", "_UCMJ_ARTICLE"), ("canlex/screening.py", "_alias_table"),
("canlex/screening.py", "_element_items"), ("canlex/screening.py", "_expand_abbreviations"),
("canlex/screening.py", "_expand_phrases"), ("canlex/screening.py", "_fold"),
("canlex/screening.py", "_phrases_in"), ("canlex/screening.py", "_plain"),
("canlex/screening.py", "_terms"), ("canlex/screening.py", "_years_text"),
("canlex/screening.py", "alias_pattern"), ("canlex/screening.py", "all_aliases"),
("canlex/screening.py", "analyse"), ("canlex/screening.py", "branch_text"),
("canlex/screening.py", "content_tokens"), ("canlex/screening.py", "date_warnings"),
("canlex/screening.py", "disposition_match_text"), ("canlex/screening.py", "expand"),
("canlex/screening.py", "expand_disposition"),
("canlex/screening.py", "has_conviction_words"),
("canlex/screening.py", "has_military_cue"), ("canlex/screening.py", "is_single_term"),
("canlex/screening.py", "limb_entries"), ("canlex/screening.py", "limb_entry"),
("canlex/screening.py", "limb_label"), ("canlex/screening.py", "load_aliases"),
("canlex/screening.py", "offence_flags"), ("canlex/screening.py", "parse_date"),
# the code audit of 2026-09-21: the exact-search bound of occurrence_range, the
# year bounds parse_date accepts
("canlex/screening.py", "_OCCURRENCE_EXACT_MAX"),
("canlex/screening.py", "DATE_YEAR_MIN"), ("canlex/screening.py", "DATE_YEAR_MAX"),
("canlex/screening.py", "result_line"), ("canlex/screening.py", "suggest_by_meaning"),
("canlex/screening.py", "US_STATES"), ("canlex/screening.py", "_READING_KEYS"),
("canlex/screening.py", "_READ_FIELDS"), ("canlex/screening.py", "_RECORD"),
("canlex/screening.py", "_analyse"), ("canlex/screening.py", "_covers"),
("canlex/screening.py", "_iso_day"), ("canlex/screening.py", "_period"),
("canlex/screening.py", "_raw_aliases"), ("canlex/screening.py", "_state_name"),
("canlex/screening.py", "alias_entries"), ("canlex/screening.py", "aliases_read"),
("canlex/screening.py", "record_context"),
# the record-order pass's compiled patterns, memo, folding and segment
# spans (disposition roadmap T1.6; the rules are REVIEWED above)
("canlex/screening.py", "_CUE"), ("canlex/screening.py", "_RECORD_ORDER_CACHE"),
("canlex/screening.py", "_accent_fold"), ("canlex/screening.py", "_segments"),
("canlex/server.py", "_row_tier_label"),
("canlex/screening.py", "disposition_flags"),
# row selection and the headline's helpers: list coercion, a state's rows,
# phrase lookup and its cache, a row's label, sentence splitting, General
# notes once (disposition roadmap T1.11, T6.1; the rules are REVIEWED above)
("canlex/server.py", "_as_list"), ("canlex/server.py", "_state_rows"),
("canlex/server.py", "_phrase_in"), ("canlex/server.py", "_ROW_WORDS_CACHE"),
("canlex/server.py", "_row_label"), ("canlex/server.py", "_DECIDING_SPLIT"),
("canlex/server.py", "_general_notes"),
# the review of batch 1 (fixer, 2026-09-16): the compiled bare-'guilty' pattern;
# the matcher's result list carrying the places a phrase-only gate lists
("canlex/server.py", "_Matches"),
# the review of batch 1, round 2: a segment lookup, a same-length blank, a matched
# name's segment index
("canlex/screening.py", "_seg_of"), ("canlex/screening.py", "_blank"),
("canlex/server.py", "_name_segment"),
# canlex/server.py
("canlex/server.py", "_AUTO"), ("canlex/server.py", "_CANADA_COUNTRY"),
("canlex/server.py", "_INDEX"), ("canlex/server.py", "_OPEN"),
("canlex/server.py", "_PROVINCES"), ("canlex/server.py", "_READONLY"),
("canlex/server.py", "_STATE_NAMES"), ("canlex/server.py", "_TIE_BLANK"),
("canlex/server.py", "_US_COUNTRY"), ("canlex/server.py", "_US_OTHER"),
("canlex/server.py", "_US_TERRITORIES"), ("canlex/server.py", "_as_bool"),
("canlex/server.py", "_assumed_block"), ("canlex/server.py", "_branch_set"),
("canlex/server.py", "_corpus_has_decision"), ("canlex/server.py", "_disp_fold"),
("canlex/server.py", "_record_places"),
("canlex/server.py", "_disp_key"), ("canlex/server.py", "_disp_tokens"),
("canlex/server.py", "_entry_names"), ("canlex/server.py", "_equal_second"),
("canlex/server.py", "_fee_amount"), ("canlex/server.py", "_index"),
("canlex/server.py", "_load_dispositions"), ("canlex/server.py", "_load_equivalency"),
# the code audit of 2026-09-21: the guarded, mtime-cached curated loader; the
# closest-legislation hint the search tool's act-filter miss shares with _not_found
("canlex/server.py", "_CURATED_CACHE"), ("canlex/server.py", "_curated_json"),
("canlex/server.py", "_closest_acts"), ("canlex/server.py", "_md_cell"),
("canlex/server.py", "_fold_ws"),
("canlex/server.py", "_load_transborder"), ("canlex/server.py", "_max_shown"),
("canlex/server.py", "_option_label"), ("canlex/server.py", "_section_text"),
("canlex/server.py", "_state_row"), ("canlex/server.py", "_us_state_value"),
("canlex/server.py", "_years"), ("canlex/server.py", "mcp"),
# the spellings of a state or province a record's state field carries --
# dotted abbreviations, D.C. spellings, 'X, USA' wrappers -- and a flag's
# memo-or-card text pick (disposition roadmap T1.4, T1.6; the
# normalisation _jurisdiction applies is REVIEWED above)
("canlex/server.py", "_STATE_ABBREVIATIONS"), ("canlex/server.py", "_DC_SPELLINGS"),
("canlex/server.py", "_PROVINCE_ABBREVIATIONS"), ("canlex/server.py", "_US_WRAPPER"),
("canlex/server.py", "_place_code"), ("canlex/server.py", "_us_state_code"),
# H2 (2026-09-22, G2-REL-G): the other shapes a record writes Canada in ('CAN', 'CA',
# 'Ontario, Canada', 'Canada (Ontario)') -- the routing _jurisdiction applies with them
# is REVIEWED above
("canlex/server.py", "_CANADA_WRAPPER"), ("canlex/server.py", "_CANADA_WITH_PROVINCE"),
("canlex/server.py", "_canada_place"),
("canlex/server.py", "_province_code"), ("canlex/server.py", "_state_display"),
("canlex/server.py", "_flag_lines"),
# canlex/synonyms.py
("canlex/synonyms.py", "_COMPILED"), ("canlex/synonyms.py", "_SYNONYMS"),
("canlex/synonyms.py", "expand_query"),
# canlex/airports.py -- an aerodrome's IATA code and names reach its CASR 2012
# schedule row (2026-10-15); like the synonyms, recall only, no legal wording
("canlex/airports.py", "AERODROMES"), ("canlex/airports.py", "Aerodrome"),
("canlex/airports.py", "_BY_IATA"), ("canlex/airports.py", "_CONTEXT"),
("canlex/airports.py", "_ENTRIES"), ("canlex/airports.py", "_INTERNATIONAL"),
("canlex/airports.py", "_WINDOW"), ("canlex/airports.py", "_WORD_CODES"),
("canlex/airports.py", "_fold"), ("canlex/airports.py", "_in_context"),
("canlex/airports.py", "_phrase"), ("canlex/airports.py", "airport_terms"),
# canlex/transborder.py
("canlex/transborder.py", "TABLE_FILE"), ("canlex/transborder.py", "_SEC"),
("canlex/transborder.py", "_norm"), ("canlex/transborder.py", "_table_rows"),
("canlex/transborder.py", "_yn"), ("canlex/transborder.py", "section_label"),
# canlex/readnext.py -- resolving keys, loading the corpus (A13)
("canlex/readnext.py", "items"), ("canlex/readnext.py", "_file_for_act"),
("canlex/readnext.py", "_file_chunks"), ("canlex/readnext.py", "_INDEX_MAP"),
("canlex/readnext.py", "_pool"), ("canlex/readnext.py", "resolve"),
("canlex/readnext.py", "is_atip"), ("canlex/readnext.py", "is_guidance"),
("canlex/readnext.py", "chunk_ids"),
# canlex/server.py -- the methodology lookup and the held manifest loader (A13)
("canlex/server.py", "_framework"), ("canlex/server.py", "_held_manifest"),
("canlex/server.py", "HELD_MANIFEST_FILE"), ("canlex/server.py", "_HELD_CACHE"),
("canlex/server.py", "_held_id"), ("canlex/server.py", "_alias_keys_read"),
("canlex/server.py", "_ALIAS_KEYS_READ"),
# canlex/server.py -- the step memo and the decisive-facts data shapes (A14)
("canlex/server.py", "_STEP_MEMO"), ("canlex/server.py", "_step_memo"),
("canlex/server.py", "_memo_run"), ("canlex/server.py", "_memo_value"),
("canlex/server.py", "_signature_dict"), ("canlex/server.py", "_ISO"),
("canlex/server.py", "_history_sig_dict"), ("canlex/server.py", "_parsed_with"),
# canlex/screening.py -- sentence tokens and units (A14)
("canlex/screening.py", "_SENT_SPLIT"), ("canlex/screening.py", "_SENT_UNITS"),
("canlex/screening.py", "_SENT_DURATION"),
# canlex/narrative.py -- number words, the curated list, citation and chunk
# lookups, the frames' source chunks (A15; the wording is REVIEWED above)
("canlex/narrative.py", "_EN_NUM"), ("canlex/narrative.py", "_FR_NUM"),
("canlex/narrative.py", "provisions"), ("canlex/narrative.py", "_cite"),
("canlex/narrative.py", "_chunk"), ("canlex/narrative.py", "FRAME_SOURCE"),
# canlex/commentary.py and canlex/_common.py -- the corpus writer's paths,
# names and shrink guard, reached by commentary.build (wave-4 verifier)
("canlex/_common.py", "CORPUS_SHRINK_GUARD"), ("canlex/_common.py", "safe_to_write"),
("canlex/_common.py", "stored_chunks"), ("canlex/_common.py", "write_corpus"),
("canlex/commentary.py", "ACT_CODE"), ("canlex/commentary.py", "ACT_NAME"),
("canlex/commentary.py", "ACT_SHORT"), ("canlex/commentary.py", "CURATED"),
("canlex/commentary.py", "EQUIV"), ("canlex/commentary.py", "OUT"),
# canlex/server.py -- the 'none' test for relief words (wave-4 fixer)
("canlex/server.py", "_no_relief"),
# canlex/calllog.py and canlex/loganalyze.py -- the MCP call log and its
# report (2026-09-16). No registered name reaches them (the log wraps the
# tool manager at startup; no tool body calls it); listed so every
# definition in them is classified. They carry no legal wording or
# routing: queueing, JSON records, sinks, the Hub upload, counting.
# NOTICE and announce (fixer, 2026-09-16) state that calls are logged, in
# the MCP instructions and at GET /, only while logging is on; the notice
# is a plain statement that gives no advice about which arguments to send.
("canlex/calllog.py", "NOTICE"), ("canlex/calllog.py", "WARN_EVERY"),
("canlex/calllog.py", "announce"),
("canlex/calllog.py", "CallLog"), ("canlex/calllog.py", "DEFAULT_EVERY_MIN"),
("canlex/calllog.py", "DatasetSink"), ("canlex/calllog.py", "LOG_FILE"),
("canlex/calllog.py", "LocalSink"), ("canlex/calllog.py", "MAX_ITEMS"),
("canlex/calllog.py", "MAX_STRING"), ("canlex/calllog.py", "ARGS_BUDGET"),
("canlex/calllog.py", "NEEDS_CAP"),
("canlex/calllog.py", "NEED_CHARS"), ("canlex/calllog.py", "PATH_IN_REPO"),
("canlex/calllog.py", "PENDING_CAP"), ("canlex/calllog.py", "QUEUE_SIZE"),
("canlex/calllog.py", "RESULT_KEYS"), ("canlex/calllog.py", "RESULT_MARK"),
("canlex/calllog.py", "RETRY_DELAYS"), ("canlex/calllog.py", "SEARCH_KEYS"),
("canlex/calllog.py", "_STOP"), ("canlex/calllog.py", "_clean"),
("canlex/calllog.py", "_cut"), ("canlex/calllog.py", "_describe"),
("canlex/calllog.py", "_error_name"), ("canlex/calllog.py", "_every"),
("canlex/calllog.py", "_extra"), ("canlex/calllog.py", "_iso"),
("canlex/calllog.py", "_need"), ("canlex/calllog.py", "_output_text"),
("canlex/calllog.py", "_result_fields"), ("canlex/calllog.py", "_result_line"),
("canlex/calllog.py", "_status"), ("canlex/calllog.py", "_warn"),
("canlex/calllog.py", "allow_dataset_requests"), ("canlex/calllog.py", "build_record"),
("canlex/calllog.py", "configure"), ("canlex/calllog.py", "install"),
("canlex/calllog.py", "note"), ("canlex/calllog.py", "recording"),
("canlex/calllog.py", "wrap"),
("canlex/loganalyze.py", "HELD_BRANCH"), ("canlex/loganalyze.py", "NOT_SETTLED_STATUS"),
("canlex/loganalyze.py", "NOT_SETTLED_STATUSES"), ("canlex/loganalyze.py", "OFFENCE_KEYS"),
("canlex/loganalyze.py", "OPEN_BRANCHES"), ("canlex/loganalyze.py", "SEARCH_TOOL"),
("canlex/loganalyze.py", "held_table"),
("canlex/loganalyze.py", "TOP"), ("canlex/loganalyze.py", "_WEAK"),
("canlex/loganalyze.py", "_day"), ("canlex/loganalyze.py", "_load"),
("canlex/loganalyze.py", "_stamp"), ("canlex/loganalyze.py", "_summary"),
("canlex/loganalyze.py", "_text"), ("canlex/loganalyze.py", "download_dataset"),
("canlex/loganalyze.py", "load_calls"), ("canlex/loganalyze.py", "log_files"),
("canlex/loganalyze.py", "main"), ("canlex/loganalyze.py", "normalize"),
("canlex/loganalyze.py", "not_settled"), ("canlex/loganalyze.py", "offences"),
("canlex/loganalyze.py", "report"), ("canlex/loganalyze.py", "since"),
("canlex/loganalyze.py", "user_env_token"), ("canlex/loganalyze.py", "window_patterns"),
# ---- audit follow-up 2026-09-21, group A (retrieval performance) ----
# canlex/bm25.py: the BM25 postings as arrays and their data/cache/ cache
# (Optimization 5/6/8); canlex/index.py: the text BM25 indexes, the
# corrector's words and the cache key's code half; canlex/rerank.py: the
# local-cache-first model files (Optimization 3) and the arena-shrinking
# RunOptions (Optimization 2). Search plumbing: no legal wording.
("canlex/bm25.py", "Bm25Data"), ("canlex/bm25.py", "CACHE_DIR"),
("canlex/bm25.py", "CACHE_VERSION"), ("canlex/bm25.py", "Postings"),
("canlex/bm25.py", "_CACHE_PREFIX"), ("canlex/bm25.py", "_csr"),
("canlex/bm25.py", "_joined"), ("canlex/bm25.py", "_source"),
("canlex/bm25.py", "_split"), ("canlex/bm25.py", "build"),
("canlex/bm25.py", "cache_key"), ("canlex/bm25.py", "cache_path"),
("canlex/bm25.py", "code_fingerprint"), ("canlex/bm25.py", "file_stamps"),
("canlex/bm25.py", "first_seen"), ("canlex/bm25.py", "load"),
("canlex/bm25.py", "save"),
("canlex/index.py", "_CORRECTOR_WORD"), ("canlex/index.py", "_bm25_blob"),
("canlex/index.py", "_bm25_code_key"), ("canlex/index.py", "_corrector_words"),
("canlex/bm25.py", "_SCOPES"),
# item 5 (the retrieval residue): a French Act's short title for the
# section pin, the French corrector vocabulary (accents kept)
("canlex/index.py", "_FR_TITLE_NOTE"), ("canlex/index.py", "_fold_title"),
("canlex/index.py", "_french_short_title"),
("canlex/index.py", "_CORRECTOR_FR_WORD"), ("canlex/index.py", "_corrector_fr_words"),
# item 8 (eval-gated, adopted): the criminality route guard's idf floor
("canlex/index.py", "_ROUTE_IDF_FLOOR"), ("canlex/index.py", "HIGHLIGHT_DEPTH"),
("canlex/rerank.py", "_ARENA_SHRINK"), ("canlex/rerank.py", "hub_file"),
("canlex/rerank.py", "make_run_options"),
# ---- end of group A ----
# ---- audit follow-up 2026-09-21, group B (plumbing) ----
("canlex/screening.py", "_ALIAS_LOCK"),
("canlex/screening.py", "_term_reading"),
("canlex/server.py", "_SECTION_TEXT_CACHE"),
("canlex/server.py", "_frozen"),
("canlex/server.py", "_record_assessment"),
("canlex/calllog.py", "ERROR_KEYS"),
("canlex/calllog.py", "_guard"),
("canlex/server.py", "TOC_FULL_LISTING"),
("canlex/server.py", "_TOC_NUMBER"),
("canlex/server.py", "_TOC_LABEL"),
("canlex/server.py", "_TOC_QUERY"),
("canlex/server.py", "_toc_matches"),
("canlex/server.py", "_toc_division_ranges"),
("canlex/server.py", "_toc_part"),
("canlex/server.py", "_corpus_text"),
("canlex/server.py", "_CORPUS_FOOTER"),
("canlex/server.py", "_embedding_currency_lines"),
# ---- end group B (plumbing) ----
# ---- verification fixes 2026-09-22, group F2 (retrieval plumbing) ----
# the section pin's article forms: a treaty's article is no section
# (A-PIN-ARTICLE); the BM25 cache's orphan sweep and array checks
# (A-CACHE-TMP, SEC-3)
("canlex/index.py", "_TREATY"), ("canlex/index.py", "_TREATY_AFTER"),
("canlex/index.py", "_FR_ARTICLE_TAIL"), ("canlex/index.py", "_DOTLESS_ART"),
("canlex/index.py", "_article_cites_section"),
("canlex/bm25.py", "_TMP_STALE_SECONDS"), ("canlex/bm25.py", "_drop_stale_tmp"),
("canlex/bm25.py", "_consistent"),
# ---- end group F2 ----
# ---- verification fixes 2026-09-22, F3 (plumbing) ----
# B-CACHE-1: the alias-table generation that keys the expansion cache
("canlex/screening.py", "_ALIAS_GENERATION"),
# ---- end F3 (plumbing) ----
# ---- verification fixes 2026-09-22, G2 (plumbing) ----
# how the later Canadian entries are listed in the relief notes ('entries #2, #3')
("canlex/server.py", "_later_entries_text"),
# ---- end G2 (plumbing) ----
)
|