Skip to main content
Workforce LibreTexts

9.2.7: Case Study - Grid Convergence

  • Page ID
    66230
  • \( \newcommand{\vecs}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \)

    \( \newcommand{\vecd}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash {#1}}} \)

    \( \newcommand{\dsum}{\displaystyle\sum\limits} \)

    \( \newcommand{\dint}{\displaystyle\int\limits} \)

    \( \newcommand{\dlim}{\displaystyle\lim\limits} \)

    \( \newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\)

    ( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\)

    \( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\)

    \( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\)

    \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\)

    \( \newcommand{\Span}{\mathrm{span}}\)

    \( \newcommand{\id}{\mathrm{id}}\)

    \( \newcommand{\Span}{\mathrm{span}}\)

    \( \newcommand{\kernel}{\mathrm{null}\,}\)

    \( \newcommand{\range}{\mathrm{range}\,}\)

    \( \newcommand{\RealPart}{\mathrm{Re}}\)

    \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\)

    \( \newcommand{\Argument}{\mathrm{Arg}}\)

    \( \newcommand{\norm}[1]{\| #1 \|}\)

    \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\)

    \( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\AA}{\unicode[.8,0]{x212B}}\)

    \( \newcommand{\vectorA}[1]{\vec{#1}}      % arrow\)

    \( \newcommand{\vectorAt}[1]{\vec{\text{#1}}}      % arrow\)

    \( \newcommand{\vectorB}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \)

    \( \newcommand{\vectorC}[1]{\textbf{#1}} \)

    \( \newcommand{\vectorD}[1]{\overrightarrow{#1}} \)

    \( \newcommand{\vectorDt}[1]{\overrightarrow{\text{#1}}} \)

    \( \newcommand{\vectE}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash{\mathbf {#1}}}} \)

    \( \newcommand{\vecs}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \)

    \(\newcommand{\longvect}{\overrightarrow}\)

    \( \newcommand{\vecd}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash {#1}}} \)

    \(\newcommand{\ket}[1]{\left| #1 \right>}\)
    \(\newcommand{\bra}[1]{\left< #1 \right|}\)
    \(\newcommand{\braket}[2]{\left< #1 \vphantom{#2} \right| \left. #2 \vphantom{#1} \right>}\)
    \(\newcommand{\braopket}[3]{\left< #1 \vphantom{#2}\vphantom{#3} \right| #2 \vphantom{#1}\vphantom{#3} \left| #3 \vphantom{#1}\vphantom{#2} \right>}\)
    \(\newcommand{\qmvec}[1]{\mathbf{\vec{#1}}}\)
    \(\newcommand{\op}[1]{\hat{\mathbf{#1}}}\)
    \(\newcommand{\expect}[1]{\langle #1 \rangle}\)
    \(\newcommand{\dfn}[1]{\emph{\textbf{#1}}}\)

    \(\newcommand{\avec}{\mathbf a}\) \(\newcommand{\bvec}{\mathbf b}\) \(\newcommand{\cvec}{\mathbf c}\) \(\newcommand{\dvec}{\mathbf d}\) \(\newcommand{\dtil}{\widetilde{\mathbf d}}\) \(\newcommand{\evec}{\mathbf e}\) \(\newcommand{\fvec}{\mathbf f}\) \(\newcommand{\nvec}{\mathbf n}\) \(\newcommand{\pvec}{\mathbf p}\) \(\newcommand{\qvec}{\mathbf q}\) \(\newcommand{\svec}{\mathbf s}\) \(\newcommand{\tvec}{\mathbf t}\) \(\newcommand{\uvec}{\mathbf u}\) \(\newcommand{\vvec}{\mathbf v}\) \(\newcommand{\wvec}{\mathbf w}\) \(\newcommand{\xvec}{\mathbf x}\) \(\newcommand{\yvec}{\mathbf y}\) \(\newcommand{\zvec}{\mathbf z}\) \(\newcommand{\rvec}{\mathbf r}\) \(\newcommand{\mvec}{\mathbf m}\) \(\newcommand{\zerovec}{\mathbf 0}\) \(\newcommand{\onevec}{\mathbf 1}\) \(\newcommand{\real}{\mathbb R}\) \(\newcommand{\twovec}[2]{\left[\begin{array}{r}#1 \\ #2 \end{array}\right]}\) \(\newcommand{\ctwovec}[2]{\left[\begin{array}{c}#1 \\ #2 \end{array}\right]}\) \(\newcommand{\threevec}[3]{\left[\begin{array}{r}#1 \\ #2 \\ #3 \end{array}\right]}\) \(\newcommand{\cthreevec}[3]{\left[\begin{array}{c}#1 \\ #2 \\ #3 \end{array}\right]}\) \(\newcommand{\fourvec}[4]{\left[\begin{array}{r}#1 \\ #2 \\ #3 \\ #4 \end{array}\right]}\) \(\newcommand{\cfourvec}[4]{\left[\begin{array}{c}#1 \\ #2 \\ #3 \\ #4 \end{array}\right]}\) \(\newcommand{\fivevec}[5]{\left[\begin{array}{r}#1 \\ #2 \\ #3 \\ #4 \\ #5 \\ \end{array}\right]}\) \(\newcommand{\cfivevec}[5]{\left[\begin{array}{c}#1 \\ #2 \\ #3 \\ #4 \\ #5 \\ \end{array}\right]}\) \(\newcommand{\mattwo}[4]{\left[\begin{array}{rr}#1 \amp #2 \\ #3 \amp #4 \\ \end{array}\right]}\) \(\newcommand{\laspan}[1]{\text{Span}\{#1\}}\) \(\newcommand{\bcal}{\cal B}\) \(\newcommand{\ccal}{\cal C}\) \(\newcommand{\scal}{\cal S}\) \(\newcommand{\wcal}{\cal W}\) \(\newcommand{\ecal}{\cal E}\) \(\newcommand{\coords}[2]{\left\{#1\right\}_{#2}}\) \(\newcommand{\gray}[1]{\color{gray}{#1}}\) \(\newcommand{\lgray}[1]{\color{lightgray}{#1}}\) \(\newcommand{\rank}{\operatorname{rank}}\) \(\newcommand{\row}{\text{Row}}\) \(\newcommand{\col}{\text{Col}}\) \(\renewcommand{\row}{\text{Row}}\) \(\newcommand{\nul}{\text{Nul}}\) \(\newcommand{\var}{\text{Var}}\) \(\newcommand{\corr}{\text{corr}}\) \(\newcommand{\len}[1]{\left|#1\right|}\) \(\newcommand{\bbar}{\overline{\bvec}}\) \(\newcommand{\bhat}{\widehat{\bvec}}\) \(\newcommand{\bperp}{\bvec^\perp}\) \(\newcommand{\xhat}{\widehat{\xvec}}\) \(\newcommand{\vhat}{\widehat{\vvec}}\) \(\newcommand{\uhat}{\widehat{\uvec}}\) \(\newcommand{\what}{\widehat{\wvec}}\) \(\newcommand{\Sighat}{\widehat{\Sigma}}\) \(\newcommand{\lt}{<}\) \(\newcommand{\gt}{>}\) \(\newcommand{\amp}{&}\) \(\definecolor{fillinmathshade}{gray}{0.9}\)

    Pacifica Power: Ninety Percent of the Budget on Glitches

    Head of Portfolio Management Renee Delacroix walked into the October board review already knowing Project Convergence's dashboard would be deep red. Nine months into a 120 million dollar effort to build an AI-driven smart grid, the state's mandate to hit 50 percent renewable generation within three years was closing in, and the program meant to keep the lights on when clouds rolled over Pacifica's new solar farms was in worse shape than anyone outside the engineering team had realized.

    Lead Engineer Tobias Lindgren laid out the first problem before she'd even sat down. "The algorithm itself works," he said. "The problem is what it's plugged into. Every time the AI sends a rapid rebalancing command, it hits code written twenty years ago that was never built to receive instructions this fast, and the legacy system crashes. We're spending something close to eighty percent of our engineering time just recovering from glitches the old software throws at us, not building anything new." Renee didn't need the number explained twice. The team wasn't behind because the AI didn't work. They were behind because it was plugged into a foundation that couldn't carry it.

    The second problem was quieter and, in its own way, more dangerous. Senior Grid Operator Ray Kowalczyk had spent thirty years managing power lines by feel and instinct, and he didn't trust a system that made decisions he couldn't see the reasoning behind. When Renee reviewed the operational logs, she found operators routinely overriding or simply ignoring the AI's rebalancing recommendations, quietly reverting to manual control instead. She asked Ray about it directly. "It tells me to shift load and doesn't tell me why," he said. "I've kept this grid stable for three decades without a black box making calls I can't check. I'm not handing that over because someone in engineering says the math is sound."

    EVP of Grid Operations Bruce Halvorsen wanted to solve both problems by pushing harder. He ordered double shifts for the engineering team to force the AI online on schedule and told the operators their compliance with the system's recommendations was no longer optional. Renee stopped him before it went further. "Doubling the hours doesn't fix code that crashes under load," she told him. "It just burns capital faster while the same crashes keep happening on a more expensive clock. And ordering Ray's team to trust a system they don't understand doesn't build trust. It just moves the resistance somewhere you can't see it as easily."

    She brought the board a different plan. Rather than pushing forward, she proposed pausing new AI feature work entirely for three months and redirecting the team to refactor the legacy code so it could actually receive commands at the speed the algorithm needed to send them. To fund the pause, she pulled 20 million dollars from a set of lower-priority discretionary projects, including a billing website upgrade that hadn't started yet, and ring-fenced it into a dedicated technical debt tranche. CFO Helen Osgood wasn't thrilled about raiding the billing project. "Customers have been asking for that upgrade for two years," she said. "I need to know this isn't just moving the same kind of overrun from one project to another." Renee didn't promise her a guarantee, only a plan with a clearer target than the one currently burning cash on crash recovery.

    The cultural fix ran alongside the technical one. Renee and Tobias redesigned how the AI actually interacted with the operators, stripping away its ability to act on its own entirely. When the system predicted a power drop from cloud cover over a solar farm, it could no longer shift electricity itself. It had to surface a recommendation on Ray's screen, with the reasoning behind it laid out, and wait for a human operator to approve the action before anything executed. Ray noticed the shift almost immediately. "This I can work with," he said. "It's not making the call anymore. It's making the case, and I'm still the one deciding." Operators who'd been quietly working around the AI started engaging with it instead, and the override rate in the logs began to drop.

    With the refactored code finally stable and the workforce actually using the system as designed, Renee narrowed the rollout to exactly what compliance required: integrating the new solar and wind capacity onto the grid, nothing more. Every feature that wasn't essential to hitting the state's renewable mandate got pushed to the following year. The deadline was close enough now that hitting it on paper looked achievable for the first time in months.

    What Renee didn't have yet, days before the compliance window closed, was proof the system would hold under the exact event it had been built for. Every test so far had run against modeled weather scenarios, not a real, simultaneous cloud event sweeping across multiple solar farms at once during peak demand. Ray's team was approving AI recommendations faster now, which read as a success on the adoption metrics Renee had been tracking, but she'd also noticed operators clearing recommendations in seconds during recent drills, faster than she was confident anyone could actually be checking the AI's reasoning in that window. "I'd rather find out we have a real problem in a drill than during an actual blackout risk," she told Tobias. Neither of them had a way to force that real test to happen before the deadline arrived, and the board was still waiting to hear whether Project Convergence would actually be ready when the weather stopped cooperating with the schedule.

    Discussion Questions

    This section is designed for you to pause and consider how these leadership concepts land in your own professional world. There are no right or wrong answers here. Instead, these questions are meant to help you audit your current approach and identify where you might want to pivot.

    1. Bruce Halvorsen's response to the crisis was to order double shifts and force compliance, even though 80 percent of the engineering budget was already being consumed by crashes in the legacy system. Why does adding more hours or more pressure fail to fix a problem rooted in technical debt, and what would you have told Bruce to convince him before Renee had to step in and stop him?
    2. Renee funded the three-month refactoring pause by canceling a billing website upgrade that customers had been waiting two years for. Was that the right source of funds, and what criteria should govern which discretionary projects get sacrificed to fund a technical debt remediation happening somewhere else in the portfolio?
    3. Ray's team started approving AI recommendations far faster once the human-in-the-loop redesign gave them control, but Renee noticed some approvals happening quickly enough to worry her that the review might be becoming a formality rather than genuine oversight. Does the human-in-the-loop design actually solve the trust problem here, or does it risk creating a new one, and how would you test whether operators are truly reviewing the AI's reasoning before the system faces a real grid-wide event?

     


    9.2.7: Case Study - Grid Convergence is shared under a CC BY 4.0 license and was authored, remixed, and/or curated by LibreTexts.