Tempers boiled over at Wednesday’s San Bernardino City Council meeting, with elected officials accusing each other of drunkenness, smear campaigns and Brown Act violations.
At issue: a somewhat mysterious effort to fire Sonia Carvalho, the city attorney. That effort failed after rounds of parliamentary jockeying and bitterness that was remarkable even by San Bernardino standards.
Carvalho, hired by the city in 2018 to work under then-City Attorney Gary Saenz, replaced him in 2020. It was never made clear Wednesday why anyone thought she should be fired. Well, we’ll come back to that. There’s a lot to unpack.
The last item on the agenda was about terminating the city attorney contract with Best Best & Krieger. In the closed session at the start, a performance evaluation of Carvalho — placed there by Carvalho herself — was among the items.
I made sure to be in the council chambers at 4 p.m. before the closed session. My hunch was that this brief window of activity might be telling.
What I witnessed was one of the crazier meetings of my 37 years of doing this.
Mayor Helen Tran read a prepared statement, saying that “it was wholly inappropriate for the city attorney to place her own item on the closed session agenda.” She said she was exercising her authority to remove it.
Councilmember Fred Shorett objected to what he called “a political agenda.” Tran said she would veto any attempt to override her decision.
“Who’s been advising you, Penman?” Shorett fired back, referring to politico Jim Penman. “Come on!”
Shorett, Theodore Sanchez, Sandra Ibarra, Juan Figueroa and Damon Alexander walked out, leaving Tran, Ben Reynoso and Kimberly Calvin on the dais. “Kangaroo court,” Shorett spat as he left.
Tran left the dais too, but only for a conversation with me.
She said she put the firing on the agenda after Calvin “brought forward a list of issues” with Carvalho.
“I support terminating the city attorney without cause,” Tran told me. “I think we need stability. I ran on two things, stability and transparency. Stability has not been achieved. Since I’ve come in” — 2022 — “how many city managers have we had? Four.”
The argument falls a little flat. Tran had a hand in hiring, firing or forcing out most of those city managers. Carvalho’s six-year tenure, by contrast, seems to represent a rare island of stability.
Carvalho and Rochelle Clayton, the acting city manager, belatedly arrived and the meeting resumed. Shorett pressed Clayton to explain how Carvalho’s evaluation got onto the agenda.
“Do you control the agenda?” Shorett asked several times.
City Clerk Genoveva Rocha said she emailed and texted Clayton Friday afternoon with Carvalho’s request before the agenda was posted and got no response. Clayton said she first saw the agenda on Saturday and claimed it was then too late to amend it.
When the council went into closed session, it was unclear if Carvalho’s evaluation was still up for discussion or not.
“How many pens did you bring tonight?” Figueroa asked me on his way out. “Go to the store and get more, you’re going to need them.”
“Write a good article, David,” Reynoso said. I replied: “You’re giving me great material.”
The open session at 5 p.m. was mostly routine. Notable, though, was a public comment by Kim Knaus, who will be taking Reynoso’s place on the dais next month.
The public, Knaus said, doesn’t care about the city attorney. They care about homeless people in the streets, the lack of shops and restaurants, and fires in vacant buildings.
When Sanchez sought to address the attorney item immediately rather than at the end, Alexander suggested that “we postpone this until the new council comes on board.”
Aside from Tran, the two drivers of firing the attorney were Calvin and Reynoso, both of whom are leaving office next month, as is Alexander.
Sanchez’s motion to table the matter passed 4-3, a margin that allowed Tran, a non-voting member, to veto it. Or did it? There was a question whether she had that right because the decision was deemed procedural rather than legislative.
The meeting continued to other matters. When the firing came up again, Carvalho said she didn’t feel comfortable providing legal advice on Tran’s veto right. She left the executive table and took a seat in the audience behind me.
“You’ve seen a lot of firsts tonight, haven’t you?” she whispered.
Calvin and Reynoso moved to fire Carvalho. Sanchez offered a substitute motion: to table the item.
Sanchez, Ibarra, Figueroa, Shorett and Alexander supported that. The vote was 5-2, a veto-proof supermajority. “The motion to table passes,” Rocha announced.
But it wasn’t over.
Calvin made allegations of “unethical acts” and “colluding” and wished Shorett “would ever make one statement of truth.” Shorett, disgusted, left the dais.
Ibarra said Calvin had sent emails of complaint about Carvalho to individual council members while blind-copying everyone else, which she said was an attempt at a serial meeting that would violate the Brown Act.
Ibarra further said of Calvin’s accusations of “alcohol-fueled relationships”: “You have been seen doing the same thing with commissioners and a specific developer” who has engaged in “smear campaigns” against candidates.
Sanchez said the same developer had phoned him and without preamble told him he needed to hire Clayton as permanent city manager and fire Carvalho, or that Sanchez would be ousted in the 2026 election the way the developer had ousted Alexander in 2024.
“He tried it with me and he failed with me,” Ibarra chimed in.
Tran made a closing statement, saying “instability” has been the only constant of her two years as mayor. “What is the root? The city attorney’s advice has created instability,” Tran said. She then addressed Carvalho, still seated behind me, directly.
“Madam city attorney, do you want my gavel?” Tran said angrily. “Because it sounds like you’ve been controlling the city.”
Behind me, a baffled Carvalho quietly said: “What?”
With that, this most unusual meeting adjourned.
David Allen writes Friday, Sunday and (what?) Wednesday. Email dallen@scng.cm, phone 909-483-9339, like davidallencolumnist on Facebook and follow @davidallen909 on X.