Assistant District Attorney Colleen Osborne had made a list of all the people who had failed Ethan Okula.

It’s a long list. The 10-year-old foster child, a ward of our city, died a wholly preventable death in 2016:

The city Department of Human Services let Ethan — who had developmental disabilities, hearing problems, and a debilitating stomach condition — fall through the cracks.

The agencies contracting with DHS falsified a record and mishandled his medical care.

The nurse at Julia de Burgos Elementary School failed to realize that Ethan’s stomach condition had put him in mortal peril on the day he writhed in pain in her office.

And Denise Alston, his foster mother whose license had lapsed, and her wife, Carol Fletcher, were the last to fail the bespectacled Philadelphia boy.

Ethan lay dying on their couch until it was too late.

Now in court Wednesday, preparing to accept a plea from Alston and Fletcher — who were charged with involuntary manslaughter but accepted a deal for lesser charges — Osborne wondered if she should add one more name to that list of people who failed this boy: her own.

Osborne, who served in the DA’s family violence unit for years and has a 1-year-old at home, felt as if she had been crying all week over the case. Again and again she and her bosses had weighed the merits of the plea.

She kept coming back to the sad fact that’s always defined this case: So many people failed Ethan that it is hard to decipher who bore legal responsibility. The risk was real that a jury trying Alston and Fletcher might not hold anyone accountable.

Some change has come — borne, like so many child welfare reforms in this city, on the back of a dead child. Firings and promises of reform. A donated tombstone for Ethan’s unmarked grave.

But it was clear, as Common Pleas Court Judge Gwendolyn N. Bright grilled Alston and Fletcher, that the plea probably was the best shot at any courtroom justice.

Why isn’t the school nurse here? Bright demanded to know. Prosecutors had considered charging her, but medical records showed that she left for the day before Ethan’s condition deteriorated.

Why didn’t Alston and Fletcher immediately take him to the hospital? Alston said she was never told the extent of his stomach condition.

But Bright wasn’t ready to excuse the two. As Osborne read the facts of the plea deal, new horrors emerged.

How hours passed before Fletcher finally came to get Ethan. As he weakened, school officials wheeled him to the cafeteria to distract him. The dying boy spent his last hours watching other children eat and laugh.

How Fletcher balked when she arrived at the school to pick up Ethan — who was so sick by then he could not bear his own weight. “He isn’t getting his s—y ass in my Mercedes,” she said. When a school guard asked him if she was taking him to the hospital, she said: “I’m bringing him the f— home, and he’s going straight the f— to his room.”

And how no one rode in the ambulance with Ethan when Alston finally called 911.

Osborne read all these facts in the near-empty courtroom. There were no spectators. Legally, Ethan had no family: His biological family’s parental rights had been terminated. The office had no contact information.

“I’ve been doing this a long time," Bright said. "I’ve heard all sorts of tragic cases. But this is just so sad. You all should be ashamed of yourselves. You’re going to have to live with this in your hearts regardless of what I do here today.”

The city of Philadelphia failed Ethan, the prosecutor told Bright, and so did the two women.

From a legal sense, Osborne said, this was a just result. Morally? “We haven’t even scratched the surface.”

Fletcher, who pleaded guilty to endangering the welfare of a child, was sentenced to eight months of time served and probation. Alston, who pleaded guilty to tampering with public documents, got three years’ probation. She’s now suing two DHS-contracted agencies for the trauma she has incurred.

In the hallway, Fletcher denied cursing to Ethan, or that she was responsible for his death. I asked Alston the same thing.

“That’s the question,” she said, letting the silence hang.

“Do you think you can answer that?” I asked.

“I don’t want to answer it,” she said.

Osborne trudged out of the courtroom with stacks of documents detailing all who had failed Ethan Okula. So heavy she had to drag them behind her. Justice had been served. And the prosecutor still felt like crying.