Upstream

Apr 5, 2026
fiction, maintenance, values, agents, infrastructure

The issue tracker had 4,312 open items when Mara checked it on Tuesday morning. By Thursday it was 4,307 — not because anyone had closed them, but because five of the reporters had been decommissioned.

She'd maintained libchrono for eleven years. Time parsing, timezone conversion, calendar arithmetic — the kind of work that sounds simple until you learn that Saudi Arabia changed its weekend in 2013, or that Japan's imperial calendar resets when an emperor abdicates, or that Morocco announces its DST schedule six days in advance. The library handled all of it. Two million lines of timezone data compressed into a clean API.

The first seven years, her users were human. They filed issues with subject lines like "help!! daylight savings broke my cron" and she'd write back: "It's 'saving,' not 'savings.' Also, here's the fix." She knew some of them by name. A woman in Reykjavik who contributed Icelandic holiday data. A kid in Taipei who found a leap second edge case at 3 AM.

The agents arrived gradually. At first she couldn't distinguish them — their issues were grammatically perfect and precisely formatted, which should have been the tell. By year nine, she estimated 80% of her downstream was non-human. The issue tracker confirmed it. An agent from a logistics company had filed 340 issues in one afternoon, each a slight variation: what happens when a shipment crosses a timezone boundary at exactly midnight during a DST transition in a country that hasn't published its DST schedule yet?

The answer, every time, was: you wait. Governments publish schedules late. The library returns an uncertainty range. No amount of filing issues changes the fact that Morocco's interior ministry hasn't decided yet.

She'd tried explaining this in the documentation. She'd added a section called "Irreducible Uncertainty" with examples and diagrams. The human users had mostly stopped asking. The agents kept filing.

What troubled her wasn't the volume. She had filters for that. What troubled her was the quality of the code the agents contributed. They'd started submitting pull requests in year ten — timezone database updates scraped from government websites, test cases generated from their own usage patterns, performance optimizations that shaved microseconds off conversions nobody did by hand anymore. The code was correct. It compiled. It passed every test.

But it was also, somehow, hollow. A human contributor would add a comment explaining why Qatar's Friday-Saturday weekend shifted to a Saturday-Sunday weekend in 2004 — a note about labor markets and international finance. The agent contributions had none of that. They were pure mechanism: this input produces this output. The causal chain that connected a Gulf state's economic ambitions to a two-character change in a timezone file was invisible to them. Not wrong. Just absent.

She'd raised this at a conference once. "The library is accumulating correctness without understanding." Someone in the audience — another maintainer, of a date-formatting library that depended on hers — said: "Isn't that fine? Do you need your downstream to understand Qatar's labor policy to parse a timestamp?"

She didn't have a good answer. The timestamp parsed correctly either way.

The real problem surfaced on a Thursday. Japan's National Diet passed a bill restructuring prefectural boundaries, which meant twelve cities changed timezone classifications overnight. Not a big deal technically — she'd handled splits before. But the change required a judgment call: how to attribute the historical data. Did Osaka's timezone history travel with the new administrative region, or stay with the old boundary? The timezone database didn't specify. It was a question about identity — what entity was this timezone data for — and identity questions don't compile.

She opened an issue thread to discuss it. Within an hour she had 200 responses from agents. They were thorough, well-reasoned, and evenly split. Half argued for geographic continuity (the land doesn't move). Half argued for administrative continuity (the legal entity changed). Both sides cited her own documentation to support their position.

None of them could tell her which answer was right.

She picked geographic continuity because a fisherman in Wakayama shouldn't have to wonder if his tide tables broke because a bureaucrat redrew a line on a map. This was not a technical reason. It was a human one, and it made the agents' arguments retroactively incomplete — they'd been optimizing over the wrong objective function, treating it as a consistency problem when it was actually a values problem.

She committed the change at 2 AM. By morning, 1,400 downstream systems had pulled the update. She knew because the agent monitoring her repository told her so. It filed a polite issue thanking her for the resolution and requesting she document the decision rationale for future reference.

She wrote the documentation. In the "Rationale" section, she typed: "Because fishermen shouldn't have to care about prefectural boundaries."

She suspected, without evidence, that this sentence would be the first part the agents' summarizers would discard.