Bellaire City Council, 2004–2026: technical appendix

Author

Boris Shor

Published

October 26, 2026

Return to the report.

Sources and provenance

Input: Jacob/2026-10-26-bellaire/original/bellaire_council_rollcalls_2026-10-26b.zip, SHA-256 99080033fe70bdcc7bf170a45ad329e438ccdf22ecb795176fe4a61b1d279e9a (matches the adjacent hash file and a recomputed hash). The package is a machine-built candidate release from the shared council-votes collaboration and has not been independently approved. It reports 925 minutes files read, 5,285 counted roll calls and 33,310 named responses, 2003-01-06 to 2026-10-05. Source systems for the 784 retained events: Archive Center (452, 2004–2013), IQM2 (141), IQM2 agenda-packet drafts (16) and CivicWeb (175, 2015–2026). The 2019–2026 minutes come from the city’s CivicWeb portal; their use was approved for this project. Package tables used: rollcalls.csv, votes.csv, person_registry.csv, service_terms.csv, service_roster.csv, elections.csv, coverage_by_year.csv and coverage_gaps.csv. Everything was read as data only.

The package lists 61 meetings without minutes, mostly 2014–2018 (2014: 12, 2015: 15, 2016: 13, 2017: 7, 2018: 6), plus a few in 2010, 2013 and 2024–2026. It also lists 15 printed tallies that disagree with the named list; these are coded as printed in the package. Separately, the topic coder noted six printed-tally mismatches (AC-1206:82675, AC-2392:113892, AC-2394:80481, AC-2504:39370, AC-2824:93548, AC-2824:94004), which were not investigated and are routine follow-ups for the package author.

Matrix construction and exclusions

Code/79 keeps only counted == 1 rolls (5,285; the 232 reprints are excluded using the package’s own reprint_of flag). Of these, 513 are tally_only with no names (2003 and early 2004) and one more has no binary response, leaving 4,771 events with binary responses and 27 people. Vote codes: 1 for, 0 against; abstain, recused, present and absent codes (2 and 4) and blank cells are missing. Only identity-resolved responses enter, and no person is printed twice on an event. 33,310 responses on counted events leave 30,601 binary resolved; 788 events are divided. The iterative screen (at least five binary responses per event, seven per member) leaves 784 events, 26 members and 5,134 observed responses in one connected component, 2004-09-13 to 2026-07-06. 354 events have a one-member minority and are kept. Todd Thurber (two divided responses) is dropped by the member threshold; Goode and Sidney (2003 tallies only) have no binary responses. Fifty-five counted rows carry package quality flags, 14 of them “identical to an earlier block in the same file”; the two such items still in the matrix were checked and are distinct votes. The connectivity check is necessary, not sufficient, for identification.

Fitted events by calendar year are below; the final columns are the package’s own counts of all counted roll calls and of those printed with names.

Year Divided events Responses Counted roll calls Named votes Tally only
2004 11 70 330 665 233
2005 22 143 303 2,114 1
2006 54 340 367 2,440 18
2007 46 284 284 1,986 0
2008 47 295 289 2,022 0
2009 59 357 275 1,922 0
2010 53 350 381 2,659 1
2011 52 345 326 2,282 0
2012 63 415 327 2,289 0
2013 45 304 284 1,988 0
2014 43 283 311 2,127 6
2015 44 288 289 2,023 0
2016 42 287 152 1,063 0
2017 48 326 129 901 0
2018 21 142 117 821 0
2019 15 103 92 644 0
2020 21 146 92 624 1
2021 31 211 111 771 0
2022 15 100 110 763 1
2023 13 87 117 819 0
2024 25 167 147 1,028 0
2025 9 62 115 798 0
2026 5 29 85 566 0

Council windows and mayors

Windows follow the canvassed municipal elections in the October 27 package (municipal_elections.csv, municipal_election_results.csv; SHA-256 629475b6242dd201d4119e725137d2ef29c1227e49e12262a92db1e183238abb, whose votes.csv is byte-identical to the fitted input). Regular council elections are held in November of odd years (2003–2025), and the certificates that print terms show them beginning the following January. service_terms.csv shows matching seat turnover in January of every even year from 2006 to 2024 (2006-01-09, 2008-01-07, 2010-01-04, 2012-01-09, 2014-01-06, 2016-01-04, 2018-01-08, 2020-01-06, 2022-01-03 and 2024-01-31). The November 2025 election re-elected Pappas (mayor), Frazier, Gordon and Witt. Taylor’s position 4 was vacant from December 2025 until Thurber won the May 2026 special election, and Thurber is below the member threshold. The 2026 votes (five retained events) are therefore kept in the 2024–2026 tab rather than given a separate, nearly identical panel. A member belongs to a window if they have a binary response in a retained event there.

Mayors are taken from the printed call-to-order and attendance text: Siegel (2004-01-12 to 2012-01-09), Nauert (2012-01-16 to 2016-01-04), Friedberg (2016-01-25 to 2023-12-18) and Pappas (from 2024-01-31). The package service_roster.csv also marks Nathan (2020–2023) and Wesely (2020–2021) as mayor. The quoted source shows a parse of “Andrew S. Friedberg, Mayor Nathan Wesely, Council Member” as separate people, and the minutes keep calling Friedberg mayor, so those rows are not used. This is a defect for the package author.

Council Mayor Officials Events Responses First Last
2004⁠–⁠2006 Cynthia Siegel 7 33 213 2004⁠-⁠09⁠-⁠13 2005⁠-⁠12⁠-⁠19
2006⁠–⁠2008 Cynthia Siegel 7 100 624 2006⁠-⁠01⁠-⁠16 2007⁠-⁠12⁠-⁠17
2008⁠–⁠2010 Cynthia Siegel 8 106 652 2008⁠-⁠01⁠-⁠21 2009⁠-⁠12⁠-⁠07
2010⁠–⁠2012 Cynthia Siegel 8 105 695 2010⁠-⁠01⁠-⁠18 2011⁠-⁠12⁠-⁠12
2012⁠–⁠2014 Philip L. Nauert 7 108 719 2012⁠-⁠01⁠-⁠16 2013⁠-⁠12⁠-⁠02
2014⁠–⁠2016 Philip L. Nauert 8 87 571 2014⁠-⁠02⁠-⁠17 2015⁠-⁠12⁠-⁠07
2016⁠–⁠2018 Andrew S. Friedberg 7 90 613 2016⁠-⁠01⁠-⁠25 2017⁠-⁠12⁠-⁠18
2018⁠–⁠2020 Andrew S. Friedberg 7 36 245 2018⁠-⁠04⁠-⁠02 2019⁠-⁠12⁠-⁠16
2020⁠–⁠2022 Andrew S. Friedberg 7 52 357 2020⁠-⁠01⁠-⁠27 2021⁠-⁠10⁠-⁠04
2022⁠–⁠2024 Andrew S. Friedberg 7 28 187 2022⁠-⁠01⁠-⁠24 2023⁠-⁠12⁠-⁠18
2024⁠–⁠2026 Gus E. Pappas 7 39 258 2024⁠-⁠04⁠-⁠01 2026⁠-⁠07⁠-⁠06

Model and initialization

A one-dimensional probit ideal-point model is fitted with pscl::ideal():

Pr⁡(yij=1)=Φ(βjxi−αj).\Pr(y_{ij}=1)=\Phi(\beta_j x_i-\alpha_j).

The established default priors apply: member positions are standard normal and item parameters have normal priors with precision 0.04. Positions are normalized to mean zero and standard deviation one per retained draw. Missing responses contribute no likelihood term. Each member has one static pooled position over the whole observed service; the fit cannot show a member’s position changing over time.

Exactly two chains start at Republican-evidence = +1 (Siegel, Hickman, Hotze) and all 23 Unknown members = 0; there is no Democratic start. Evidence and starts are not fixed scores, likelihood observations or informative priors. Hotze’s start rests on earlier-only evidence and Siegel’s and Hickman’s on later or retrospective evidence.

Draw signs are aligned to a vote-derived singular-vector reference; a single global reflection per chain then puts Hickman on the positive side. This changes only the sign convention, and no member position is fixed. Orientation by Hickman, rather than the code default (the member with the most nays, McLaughlan), was chosen so that Republican-evidence members tend to lie on the positive side. It is a convention, not a claim about content. No alternative-start or repeated-pattern sensitivity run was added.

Monte Carlo diagnostics

Each chain runs 500,000 iterations after 10,000 burn-in, thinning by 500 (1,000 saved draws per chain). Seeds are 20261026 and 20261027.

Measure Value
Chains 2
Iterations after burn-in per chain 500,000
Burn-in 10,000
Thinning 500
Orientation member Will Hickman
Maximum R-hat 1.0079
Minimum effective sample size 62.2 (Pat McLaughlan)
Chain-mean correlation 0.99981

No member exceeds R-hat 1.1. McLaughlan’s effective sample size (62.2) is the weakest; his long negative tail makes his estimate and interval the least precise, and every other member has an effective sample size above 800. Agreement between the two chains supports stable sampling of the reported solution; it is not an exhaustive search for other modes.

Affiliation evidence

Ledgers: Data/Bellaire/party_research_2026-10-23/evidence.csv and Data/Bellaire/party_research_2026-10-26/evidence.csv. Siegel (Republican, party record: county party chair elected December 2020 and a 2020 congressional primary candidacy) and Hickman (Republican, reported: a State Board of Education candidate biography; identity moderately supported) are later or retrospective. Hotze (Republican, party record: a candidate for Republican precinct chair in the official March 2014 Harris County primary) is earlier only; identity is a best-effort judgment. The other 23 are Unknown after two research rounds and an October 26 retrieval pass; no opened source gave a party label, partisan candidacy, precinct-chair role or endorsement. Cindy Cohen Taylor’s “independent” wording most plausibly refers to independence in a nonpartisan race and is not a label. Bellaire’s elections are nonpartisan and Texas has no party registration. Evidence is dated and is not backdated or treated as uninterrupted membership.

Group comparisons use medians of member posterior means with group sizes shown, and no pairwise-ordering share or group-difference interval is added. With three labeled people the comparison is descriptive.

Topic coding

Topic labels are supervised machine coding by two Haiku agents of the last 700 characters of motion text before each vote, using eight fixed categories, with root review of 12 random rows per batch (24 of 24 acceptable) and harmonization of procedural motions to governance and procedure (29 rows recoded). Counts are 171 land use and zoning, 154 governance and procedure, 120 budget and tax, 112 infrastructure, 80 contracts and spending, 62 ordinances and regulation, 51 other and 34 appointments. Confidence: 443 high, 294 medium, 47 low, mostly from truncated text. Labels are descriptive only and not model inputs; see Data/Bellaire/topic_coding_2026-10-26/.

Comparison with the October 19 pilot

The October 19 pilot (Results/Bellaire/, 2007–2013, 13 members, 243 events, 1,546 responses) is a subset of this matrix: all 243 events map one-to-one through the package crosswalk and all 1,546 cells are identical. Across the 12 members matched by local ID, the pilot and current scores correlate at r = 0.86 (Spearman 0.92). The poles are unchanged; Friedberg, Parker and Nathan move from slightly negative to slightly positive, and Siegel, who started at +1, ends near zero. The pilot’s R-hat was 1.059; the present maximum is lower.

Bounded source audit

An October 23 check sampled 14 contested roll calls from 12 official minutes PDFs, comparing 98 printed named responses with the package: 98 match, with no mismatch, missing, extra or wrong-event case. The only gap was Monday’s then-missing ID, since repaired in this package. Root re-opened two items and agreed. The check supports those sampled records and the event construction, not a corpus-wide error rate; 2012–2013, agenda-packet drafts and CivicWeb records were not part of that sample (the package author reports 12 of 12 sampled CivicWeb roll calls matching). Details are in Data/Bellaire/audit_2026-10-23/.

Member estimates

Member Position Lower Upper Votes Yea Nay R-hat ESS
Pat B. McLaughlan -3.31 -4.86 -1.42 554 302 252 1.004 62
Cindy Cohen Taylor -1.19 -2.18 -0.58 28 12 16 1.002 1,698
Ross Gordon -0.66 -1.11 -0.31 66 42 24 1.000 2,000
Winfred C. Frazier -0.42 -0.78 -0.13 67 48 19 1.003 2,244
Roman F. Reed -0.42 -0.56 -0.28 307 199 108 1.008 1,281
John F. Monday -0.41 -0.70 -0.16 130 76 54 1.003 1,381
James P. Avioli, Sr. -0.34 -0.48 -0.20 371 223 148 1.007 832
Trisha S. Pollard -0.21 -0.36 -0.07 122 90 32 1.000 1,865
Michael Fife -0.21 -0.35 -0.07 177 112 65 1.000 1,248
Gus E. Pappas -0.18 -0.30 -0.06 283 172 111 1.004 1,720
Debra Marz Davison -0.10 -0.30 0.10 109 71 38 1.003 2,000
Neil Verma -0.06 -0.25 0.12 82 47 35 1.000 1,381
Brian Witt -0.03 -0.30 0.23 65 49 16 1.004 2,000
Cynthia Siegel 0.03 -0.10 0.16 329 227 102 1.001 1,754
Andrew S. Friedberg 0.03 -0.09 0.15 491 308 183 1.001 1,338
Amanda B. Nathan 0.07 -0.06 0.20 294 173 121 1.001 1,400
Philip L. Nauert 0.08 -0.04 0.20 388 228 160 1.003 1,595
Corbett Daniel Parker 0.10 -0.06 0.26 204 132 72 1.001 1,825
Jackie Georgiou 0.20 -0.10 0.58 38 28 10 1.001 2,274
John Jeffery 0.21 0.05 0.38 174 111 63 1.004 1,859
David R. Montague 0.23 0.02 0.52 126 83 43 1.001 1,001
Peggy Faulk 0.46 0.26 0.68 196 127 69 1.001 466
Nathan Wesely 0.49 0.28 0.74 79 48 31 1.000 2,000
Will Hickman 1.54 0.92 3.15 264 153 111 1.004 75
Jim Hotze 1.78 1.23 2.49 73 51 22 1.002 1,745
Catherine Lewis 2.30 1.57 3.31 117 76 41 1.001 1,018

Reproduction

Run from the Local project directory:

Rscript Code/79_prepare_bellaire_2003.r
BELLAIRE_ORIENT_MEMBER=hickman_will IDEAL_ITER=500000 Rscript Code/80_fit_bellaire_2003.r
Rscript Code/81_bellaire_report.r
quarto render bellaire-report.qmd
quarto render bellaire-technical-appendix.qmd
Rscript Code/82_check_bellaire.r

Prepared matrices, saved fits and aligned draws, summary tables and figures are in Results/Bellaire-2003/. The source ZIP and party-research batches are unchanged. No publication or upstream submission is implied by these local outputs.