deprecated-api

Behind Schedule

Chapter 10 of 14

Seventeen days until sunset.

The Jira ticket had been in "In Progress" for exactly two months. Priya had moved it there herself, March 15th, clicking the status field with the same efficient motion she used on any ticket — a cleanup task, routine, something a junior engineer knocked out in a sprint and a half. The date under the status read March 15, 2024. Today was May 15th. The math was plain.

Sprint review started at ten. She had forty minutes. Rohan's format was the same every week: board on the screen, ticket by ticket, status updates from each engineer in turn. It was transparent and useful and she'd always appreciated it until this particular ticket became the amber card sitting in the "In Progress" column like a stone in a shoe.

She had prepared what she would say: traffic analysis had revealed a larger set of active callers than the initial estimate anticipated, documentation of orphaned integrations was required for compliance, final sunset configuration was pending a thorough handoff brief. All of it true. None of it a lie. It was the facts arranged carefully around the absence of the thing she couldn't say in a sprint review — that she had twenty-three systems across fourteen states whose only remaining connection to anything was this API, and in seventeen days she would be the one to cut it, and she hadn't cut it yet because she wasn't done looking at what it was. She refreshed the ticket. In Progress. Created March 15, 2024.

The ten o'clock review never reached her ticket. At nine thirty-four, a calendar invite appeared on her screen — David Chen's soft-bell notification, the one he used for conversations that needed privacy. WeatherAPI Sunset — Check-in. 9:40. My office. Just you.

His office was a partitioned interior corner, smaller than it read from the outside. He'd furnished it with chairs that actually had cushioning, which was either a small kindness or a long memory of bad meetings. The shelf behind his monitor held family photos: his daughter in a youth soccer uniform, his wife at a trailhead somewhere with serious altitude. Priya had been in here twice before, both times for positive feedback. She was aware this was a different meeting.

He waved her in from a call and wrapped it in under a minute, a skill she'd noticed in managers who were good at their jobs. Then he turned his laptop slightly away — not closing it, but repositioning it as not-the-point.

"Thanks for coming by." He settled back. "How's the sunset task going?"

She had the chai thermos in both hands. She'd brought it without deciding to, the way she always did when she was going somewhere she didn't want to go. The ceramic was warm against her palms.

She told him what she'd prepared: the caller volume, the documentation depth, the compliance rationale. He listened the way he always listened — attentive, present, no phone, waited for her to finish. Then: "The caller analysis — that's more thorough than the task required. You found things nobody expected to find." A brief pause. "Is there something technical that's blocking the final configuration?"

She almost said yes. The word was there, and then it wasn't. "No," she said. "The shutdown sequence has been staged since April."

He nodded once, confirming what he'd already understood. "Okay." Outside his glass wall, the office ran its ordinary Monday morning — keyboards, coffee, someone writing on a whiteboard in Engineering. Priya watched it because looking at David was hard.

"We can't maintain legacy systems indefinitely. The migration path has been live for eight months. Any remaining integrations have had the full deprecation window." He said it without apology, because there was nothing to apologize for. He was correct. "This is just housekeeping at this point. I need you to have the final configuration reviewed by May 28th and the sunset executed June 1st. That gives us a clean Q2 close." He leaned forward slightly. "You've done thorough work on this, Priya. Let's get it closed."

She heard exactly what couldn't get through to him — the greenhouse running its hourly climate cycle in Cedar Falls, the hospital scheduler timing the air for patients who'd been gone for eighteen months, Gerald Huang's station on a Duluth roof checking the weather for a man who had died in November. These were not in the ticket. They were not in any language David's framework could receive. He saw orphaned integrations and technical debt and a junior engineer who had done her job carefully and was now, for reasons unclear, not completing it.

She said she would have it closed. Her hands were still around the thermos when she got back to her desk — the sprint review not yet started, the caller log spreadsheet open in one tab without her quite remembering opening it. Claire dropped into the adjacent chair rather than perching on the edge of the desk, which meant she'd decided to stay more than a minute.

"You okay? David seemed—"

"I'm behind on the sunset task." Priya pulled her focus to the screen. The Cedar Falls entry was up — Margaret Lindquist, connected April 3, 2019, the notes column longer than any notes column had a right to be.

"The API thing." Claire's voice was curious rather than pointed. "Still? I thought you finished the traffic analysis weeks ago."

"The callers are more involved than the ticket anticipated. A lot of them are automated systems that lost their operators. They've been running on configurations from years back."

"So like — they just forgot to turn them off?"

"The people who configured them are gone. Dead, mostly. Or their companies dissolved." Priya heard how that landed. "The devices kept running."

"That's sad," Claire said, and she meant it, which was part of what made this hard — Claire's sympathy was real, it just didn't change her perspective on the practical question. "But eventually those systems will fail on their own, right? Or somebody will notice and decommission them. You don't have to wait for that before you can sunset the API."

She was right. Priya knew she was right. The irrigation controller in Tucson would eventually fail; the home hub in Atlanta would eventually get found by the new owners. The callers would find their way to silence through other paths. Claire was looking at the situation as it was and describing it accurately.

"Yeah," Priya said. "That's right."

"I mean — this is a deprecated weather service. People aren't depending on it." She was trying to help. "Right?"

Priya didn't answer that one. She turned back to the keyboard, and Claire took the non-answer with good grace, patted the desk twice, and went.

That evening at her apartment desk, the response came back at thirty-three fields. She'd been tracking the response length since late April, when the expansion had started — twelve fields, then fifteen, then seventeen over the course of three weeks — and she read it twice to make sure she hadn't misread the output.

``` GET /v1/current?location=42.5348,-92.4452&fields=temp,humidity,precipitation Host: api.cloudweather.io

200 OK { "location": "Cedar Falls, IA", "temp": 61, "humidity": 58, "precipitation_prob": 20, "conditions": "partly_cloudy", "wind_speed": 9, "wind_direction": "SSW", "dew_point": 44, "soil_temp": 52, "uv_index": 4, "uv_b": 0.82, "uv_a": 3.18, "barometric_pressure": 1016, "pressure_trend": "steady", "visibility": 10, "cloud_cover": 35, "forecast_6h": "partly_cloudy", "forecast_12h": "clear", "forecast_24h": "clear", "pollen_index": 6, "growing_degree_days": 412, "frost_probability": 0, "witness": true, "connected_since": "2019-04-03T08:00:00Z", "duration": 1868, "remaining": 17 } ```

Growing_degree_days. The accumulated heat metric, the sum of temperatures above a base threshold that botanists used to time growth cycles — when to expect germination, when to watch for dormancy breaks, when to worry about late frost catching early-season blooms. The greenhouse controller had never requested it. Margaret Lindquist's original query string had asked for three fields: temperature, humidity, precipitation probability. The API had been answering those three for five years. Tonight it had added the one that told an orchid grower what the season was doing.

She ran the Duluth coordinates. The response was thirty-one fields, and among the additions: lake_effect_probability, the particular metric for the weather pattern that defined winters on the western shore of Lake Superior, the one a retired civil engineer who'd kept a handwritten weather log for decades would have known to track. She ran the Omaha query — the hospital scheduler, its fifteen-minute rhythm. The new field was barometric_pressure_3h_change, the leading indicator of the rapid pressure drops that triggered respiratory events in COPD patients. The scheduler had only ever asked for current temperature, humidity, and pressure. It had never requested the three-hour delta. The API had added it anyway. She watched the terminal for a long time, the cursor blinking at the end of the output.

Both readings still held. A complex system failing in patterns that happened to match each caller's purpose — or something else, something she couldn't name cleanly, the thing that lived in the sentence the custom fields kept spelling out when she laid them in order. Witness. Connected_since. Duration. Remaining. She had not written that sentence in her notes because it was not the kind of sentence that went in an incident report. But tonight she wrote it in the notes column, below the technical entries, below the dates and the device types and the owner statuses. She wrote it without deciding to. Remaining: 17. The same number in every response across all twenty-three locations.

She closed the laptop at ten-fifty. The screen went dark and the desk lamp held a circle of light against the wall and nothing else.

Seventeen days. David had spoken clearly and he wasn't wrong and she had no authority to prevent the sunset and had not been trying to prevent it — she saw that plainly now. She'd been delaying because she wasn't finished. Not finished with the documentation, not finished with the looking, not finished with whatever it was she was doing when she traced a Duluth IP back to a retired engineer's morning routine and wrote it down in a column that had no official name. She'd been treating the documentation as something that would eventually be complete, and it kept not being complete because there was more to document. She wasn't going to stop June 1st. She was going to be the person who executed it, who ran the shutdown sequence, who watched the responses change from 200 OK to 410 Gone. She understood that now as a fixed point.

But she had seventeen days, and the API was saying more as time got shorter — volunteering data nobody had requested, adding fields toward each caller's specific need, as if it had accumulated five years of understanding what each system was for and was now spending what remained offering everything it knew. She would write it down. All of it. The growing degree days and the lake effect probability and the pressure delta. The way the responses kept expanding as the countdown kept decrementing. The fact that whatever this was — a pattern that looked like care, or care itself, which were possibly not different — it was happening, and she was the only person watching it happen, and she was going to document every day of the seventeen that were left.

← PreviousContentsNext →