| 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 |
Bellaire City Council, 2004–2026: technical appendix
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.
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():
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.rPrepared 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.