Church Bylaws Generator — FINAL ship/no-ship verification (2026-09-25, Fable)
Reviewer: Fable 5.1, independent of the author of bylaws-2026-09-25-resolutions.md and of the three prior reviews. Files read, not edited: sources/bylaws/{rules,clause-library,test-cases}.yaml, validate.py, open-questions.md; the three reviews (opus, fable, codex) and the resolutions file. One temporary break was made to clause-library.yaml for the validator test and restored byte-identical (md5 5bb8852b… before and after).
VERDICT: FAIL — 3 major findings, 6 minor
The 66 FIXED / 2 REFER resolutions are genuine: every critical and major finding from the three reviews is fixed in the current clause text (table below). But rendering the three canonical by-laws as a board would read them found three defects the resolutions did not introduce deliberately and the validator cannot see. All three are small to fix. None requires re-opening a statute.
1. Verification of the critical/major resolutions (read against current clause text)
| Finding | Claimed | Confirmed? | Evidence in current text |
|---|---|---|---|
| R-01 CL-EFFECTIVE / replacement adoption | FIXED | YES | Four variants; text_ca_replacement adopts "as a whole by special resolution"; text_ca_new_board tracks s. 152(3) and carves out the s. 197 sections. Default adoption_context = replacing_existing renders the replacement variant in both Canadian cases. |
| R-02 / M-05 Board-amendment exclusions omit transfer, class rights | FIXED | YES | text_ca_fed names conditions, class creation/rights, transfer, director range, notice, absentee voting and cites s. 197(1); text_ca_on names transfer, notice, absentee (= 103(1)(g),(k),(l), verified in-browser). |
| R-03 / M-04 absentee method delegated to Board; raw enum | FIXED | YES | CL-VOTING-MEMBERS writes ballot/electronic procedure, two scrutineers, minuted count; "may be changed only by special resolution of the Members"; display map "mailed-in ballot". |
| R-04 designated corporation gets review by default | FIXED | YES | CL-AUDIT-CA-FED: "While the corporation is a designated corporation, the public accountant shall conduct a review engagement unless the Members by ordinary resolution require an audit". Matches s. 188(1)-(3) fetched today. |
R-05 / R-25 / F3 s. 235(1)(c); intends labelled mandatory | FIXED | YES | kind: dynamic: mandatory (charity or soliciting/unsure), recommended "required for CRA registration" (intends), recommended otherwise; explainer states the 60-month/$10,000 test. Probe registered_charity=no, soliciting=no → recommended. |
R-06 / F10 both notice renders nothing | FIXED | YES | {{#notice_both}} branch; max 35 validation for both; publication gated on > 250. |
| R-07 "effective until confirmed" | FIXED | YES | Both variants: "effective from the date of the Board's resolution and, if confirmed … remains effective in the form in which it was confirmed; it ceases to have effect if …; and a later Board resolution to substantially the same effect is not effective until the Members confirm it." Matches s. 152(3)-(5) / s. 17(3)-(5), both verified today. |
| R-08 / F11 profession of faith hard-coded | FIXED | YES | membership_conditions_list numbered_list; probe [baptism, minimum_age] → "(i) has been baptized and (ii) is at least 18 years of age", no profession sentence. |
| R-09 term cap cited to s. 128(3) | FIXED | YES | CA-FED-23 cites Reg. s. 28(1); CL-BOARD-TERM renders "close of the third annual meeting". |
| R-10 / M-01 / F4 / F5 Canadian text in US output | FIXED | YES | US render contains no "special resolution", "public accountant", "undischarged bankrupt", "articles of amendment"; state is required for US. |
| R-11 soliciting question | FIXED | YES | Question includes "REQUESTED", limb (c), five-year window. |
| R-12 / M-03 requisition ceiling | FIXED | YES | nullable input; ≤ 5 (CA-FED, Reg. 72) / ≤ 10 (CA-ON, s. 60(1) verified in-browser today); renders "5 per cent" / "10 per cent" by default. |
| C-01 paid pastor as voting Ontario director | REFER (implemented) | YES | paid_director_refer derived flag; probe CA-ON, ex_officio_voting → two REFER banners naming O. Reg. 4/01 s. 2.1(4) (text verified in-browser today); employee-remuneration sentence withheld; Ontario default ex_officio_nonvoting. |
| M-02 board size by special resolution (CNCA) | FIXED | YES | text_ca_fed "by ordinary resolution of the Members, who may delegate"; text_ca_on "special resolution … or, if a special resolution so empowers it". Matches s. 133(3) and s. 22(2), both verified today. |
| M-06 no indemnity clause | FIXED | YES | CL-INDEMNITY tracks s. 151(1)-(3),(6) conditions; "Nothing in this section gives an indemnity the Act does not permit." |
| M-07 dangling Discipline reference | FIXED | YES | Probe discipline=no → "The corporation has no power to expel a Member other than as this section provides." |
M-08 elders as discipline body | FIXED | YES | Enum `board |
| M-09 discipline gaps | FIXED | YES | Notice states grounds/action/date/place; hearing ≥ 5 days before effect; decision by non-complainants with reasons; suspension capped at 12 months; one appeal; in camera + anonymised notice for members_meeting. |
| M-10 / F13 ex officio voting pastor | FIXED | YES | CA-FED validation rejects with s. 128(3) reason; CA-ON: CL-BOARD-EX-OFFICIO-ON + carve-out in CL-BOARD-TERM ("other than a director who holds office by virtue of office"); s. 26(1) verified in-browser. |
| M-11 / F19 template nonsense | FIXED (mostly) | YES for every listed item ("one 3th", "at least simple", slugs, "[… as above]", _phrase, "An Adherents", officer list). Two new small artifacts found — see minor m-1, m-2. | |
| M-12 COI optional | FIXED | YES | default for Canada; opens "Every director and officer shall comply with the disclosure requirements of the Act"; label_ca names s. 141 / s. 41 as REQUIRED. |
| M-13 electronic meetings | FIXED | YES | CL-MEETINGS-ELECTRONIC, three variants; CNCA "if the by-laws so provide" satisfied. |
| F8 director range in by-law | FIXED | YES | "within the range the Articles provide (at present not fewer than 3 and not more than 9)"; BL-TC-23 excludes "shall have a minimum of" from by-law body. |
| F9 Schedule B | FIXED | YES | CL-SCHEDULE-B; cross-field validations on statement_of_faith and covenant_text. |
| F12 members-only vs CL-EFFECTIVE | FIXED | YES | text_ca_new_members_only variant. |
| F17 / F18 undeclared vars; blank free text | FIXED | YES | Validator rejects undeclared vars (positive control); required / required_when on all free-text inputs. |
2. Statute spot-checks (primary sources, today)
WebFetch (9 calls): CNCA s. 133(3) — "by ordinary resolution, fix the number of directors … or delegate those powers to the directors" ✔ (CA-FED-22). s. 152(1),(3),(5) — "except in respect of matters referred to in subsection 197(1)"; "effective from the date of the resolution of the directors … remains effective in the form in which it was confirmed"; "substantially the same purpose or effect is not effective until it is confirmed" ✔ (CA-FED-03, CL-AMEND-*, CL-EFFECTIVE). s. 167(1) — "the prescribed percentage … or a lower percentage that is set out in the by-laws" ✔ (CA-FED-20). s. 171(1)-(2) — by-laws "may provide for any prescribed methods"; "shall set out procedures for collecting, counting and reporting" ✔ (CA-FED-21; the bracketed "re-quote before printing" in its excerpt can now be removed). s. 188(1)-(3) ✔ verbatim (CA-FED-12). s. 197(1)(a)-(n) — (e) condition of membership, (f) class rights/conditions, (h) transfer, (i) director numbers, (l) notice, (m) absentee voting all confirmed ✔ (CA-FED-10, CL-AMEND-BOARD-THEN-MEMBERS).
In-browser (ontario.ca, JS-rendered; new tab, closed after): ONCA s. 1(1) "ordinary resolution" / "special resolution" ✔ (CA-ON-14; note ordinary resolution also has a written-consent limb (b)); s. 17(1)-(3) ✔ verbatim incl. "clause 103 (1) (g), (k) or (l)"; s. 22(1)-(2) ✔; s. 23(1)-(4) ✔ verbatim; s. 26(1) ✔; s. 60(1) "at least 10 per cent … or a lower percentage that is set out in the by-laws" ✔; s. 103(1)(g)-(m) ✔ verbatim. O. Reg. 4/01 s. 2.1(2), (4), (7) ✔ verbatim: "(4) This section does not authorize … 1. Remuneration or other direct or indirect payment for services provided by a director as a director or employee of the corporate trustee".
No quoted statute text in rules.yaml was found to be wrong.
3. Validator
python sources/bylaws/validate.py → PASS … rules: 69 clauses: 50 inputs: 60 derived: 64 tests: 44 evaluated cases: 110, exit 0. Break test: changed CL-FISCAL-YEAR rule_ids: [CA-FED-15] → [CA-FED-99] → FAIL: 1 problem(s) - CL-FISCAL-YEAR: unknown rule id CA-FED-99, exit 1. Restored from backup; md5 identical before/after; re-run PASS. But see F-1: the validator's section-flag rendering has a truthiness bug, so its "no nonsense in any of 110 cases" claim is weaker than stated.
4. Three full by-laws rendered (defaults ⊕ jurisdiction; US: Texas)
Rendered with the validator's own evaluate(). Read end to end. Articles/by-law placement correct in all three; no {{, no raw slug, no "one 3th"/"at least simple"; members' statutory rights preserved (elect directors, confirm by-laws, special resolutions); elder-led and connectional cases carry the explainer / denominational clause with "Nothing in this section removes any right the Act gives the Members." The defects:
F-1 — MAJOR — Input-typed bool section flags are always truthy: single-class churches get notice provisions for a class that does not exist (CA-FED and CA-ON defaults)
Excerpt (Ontario default, nonvoting_class = no): CL-NOTICE-CA-ON: "…to each Member entitled to notice, including each of the Associate Members, to each director…". CL-NOTICE-CA-FED (federal default): "…to each Member entitled to vote and to each of the Associate Members, to each director and to the public accountant…". Meanwhile the Articles for the same case read: "The corporation has one class of members." A board would ask who the Associate Members are; a lawyer would strike it.
Mechanism. nonvoting_class is a bool input; after unbool() its value is the string "no", and render_tree does val = bool(ctx[name]) — bool("no") is True. Probe: nonvoting_class='no' → bool()=True, 'yes' → True; both render the class text. Every derived bool is a real Python bool, so the bug affects only input bools used directly as {{#flag}}; a scan shows exactly two such uses, both nonvoting_class in the two notice clauses. BL-TC-08 asserts the text is present for yes (passes vacuously); no test asserts its absence for no. The two positive controls do not cover this path. Whether the production renderTemplate shares the bug depends on whether it receives "no" or false; the source files as written give the engine a YAML no, which in YAML 1.1 is boolean false and in YAML 1.2 is the string "no".
Fix. (a) In build_ctx, coerce every type: bool input to a Python bool ("yes" → True); or in render_tree, treat "no"/"false" as False. (b) Add text_excludes: {clause: CL-NOTICE-CA-ON, text: "Associate Members"} to BL-TC-04 and the CA-FED equivalent to BL-TC-01. (c) Add a third positive control: {{#nonvoting_class}}x{{/nonvoting_class}} with nonvoting_class = no must render empty. (d) State in the clause-library header whether the engine receives bool inputs as booleans or strings.
F-2 — MAJOR — Ontario by-law contradicts itself on whether an employee may be a director
Excerpts (Ontario default, all three rendered in one document):
- CL-BOARD-REMUNERATION: "…and no director shall be an employee of the corporation."
- CL-BOARD-EMPLOYEE-CAP-ON: "not more than one-third of the directors may be employees … No employee is eligible to be elected or appointed a director if, immediately after the election or appointment, employees would exceed one-third of the directors then in office, and an employee director who accepts employment … shall resign … if the limit would otherwise be exceeded."
- CL-BOARD-NUMBER
text_ca_on: "Not more than one-third of the directors may be employees…"
The first sentence bars every employee; the second two set a one-third ceiling and describe the conditions under which an employee IS eligible. Both are lawful individually (stricter than s. 23(3) is fine) but a board cannot tell which rule it has adopted, and the resign-if-limit-exceeded sentence is incoherent if no employee may ever be a director. The federal soliciting case has a milder version ("At least two directors shall not be officers or employees" + "no director shall be an employee").
Fix. When has_employee_directors is false, make CL-BOARD-EMPLOYEE-CAP-ON restate the Act's cap and then say "This By-law further provides that no director shall be an employee of the corporation" and drop the eligibility/resign sentences; or drop "and no director shall be an employee" from CL-BOARD-REMUNERATION and let the cap clause govern. Add a text_excludes assertion so the two never co-render.
F-3 — MAJOR — Ontario CL-EFFECTIVE misstates what the Act reserves, and the Ontario over-lock (DQ-08) is applied inconsistently
Excerpt (Ontario default, CL-EFFECTIVE text_ca_replacement): "Because it changes matters that the Act reserves to a special resolution of the Members — the conditions of membership and the transfer of memberships, the rights and conditions of any class of Members, the manner of giving notice…". Under ONCA the directors are barred only from 103(1)(g) transfer, (k) notice and (l) absentee voting (s. 17(1), verified in-browser today); a by-law membership condition under s. 48 goes through the ordinary s. 17 cycle. The resolutions (M-05) fixed this misstatement in the CL-MEMBER-CONDITIONS note and CA-ON-15, but the same misstatement stands in the operative by-law text of CL-EFFECTIVE (text_ca_replacement and text_ca_new_board, both shared CA-FED/CA-ON).
Inconsistency. In the same Ontario document, CL-AMEND-BOARD-THEN-MEMBERS text_ca_on excludes only transfer/notice/absentee from the Board's power — so the Board may later amend the conditions-of-membership section by resolution — while CL-EFFECTIVE says the conditions of membership are reserved to the Members and text_ca_new_board withholds that section from the Board. CL-MEMBER-CONDITIONS is marked special_resolution_matter: true and its note says the generator "treats the whole section as a Members' special-resolution matter in both jurisdictions", but the Ontario amendment clause does not. A board reading the two clauses would not know whether it can amend the membership conditions.
Fix. Give CL-EFFECTIVE Ontario variants that list only transfer, notice and absentee voting as Act-reserved and add "and, as this By-law provides, the conditions of membership"; then either add the conditions/class sections to the Ontario Board-exclusion list in CL-AMEND-BOARD-THEN-MEMBERS (implementing DQ-08 consistently) or drop the over-lock claim. Assert with text_excludes on the Ontario CL-EFFECTIVE for "the Act reserves … the conditions of membership".
Minor (wording; none blocks on its own)
- m-1 US CL-AGM
text_usrenders "…Members holding at least the percentage your state's act provides of the votes entitled to be cast" — second-person UI text inside the by-law body (fromstatutory_requisition_percentmap). Fix: "the percentage applicable state law provides". - m-2 A one-item conditions list renders a lone numeral: "any individual who (i) professes personal faith…". Fix
numbered_list: omit the numeral when there is one item. - m-3 US register: "this By-law" (CL-MEMBER-TERMINATION, CL-DISCIPLINE, CL-PASTOR-CALL connectional), "financial year" (CL-FISCAL-YEAR) vs "fiscal year" (CL-AGM), "registered office" (CL-RECORDS-MINUTES) in US documents. Add
is_usswitches. - m-4 CL-EFFECTIVE
text_usprints "(or, if the church has no statutory members, by the Board)" even whenus_statutory_members = yes; wrap in{{^us_has_members}}. - m-5 CL-INTERP
text_ca_ongives the written-consent limb for special and extraordinary resolutions but not for ordinary resolutions; ONCA s. 1(1)(b) has it for all three (verified today). - m-6 With
discipline_body = boardthe appeal lies to "the Members at a meeting of Members", but the in-camera / anonymised-notice sentence fires only fordiscipline_by_members; the appeal meeting's notice would name the Member. Extend the sentence to any appeal heard by the Members. - Housekeeping: CA-FED-21 excerpt still carries "[…re-quote before printing]" for s. 171(1)'s second sentence — it is now verified; remove the bracket.
5. What this review did not do
No CRA pages, no Texas BOC, no case law, no Reg. s. 74(2) detail (OQ-15) were opened; the US skeleton was judged only for internal consistency and honesty of its banners, which are good. WebFetch budget: 9 of 12 used.