"""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 `) 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 as ' 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) ---- )