Back to blog
Context layer

The Real Cost of Stale Context, One Day at a Time

No single moment in this day goes wrong. By Friday, the release plan and the code don't agree. Here's where it actually happened.


Two green aurora curtains, one shifted out of line with the other, over a snow-capped range and a fjord between pines, on a navy field

Nobody has a bad day when context goes stale. That’s what makes it hard to see coming. It’s a normal Tuesday, five small handoffs that each look completely reasonable on their own, and by the time anyone notices, the release plan and the code don’t agree anymore, and no single moment is the one anybody would point to and say “that’s where it broke.”

Stale context costs a team in small, invisible increments across a single day: a decision made in Slack that never reaches the ticket, a spec two people are building from two different versions of, an agent shipping code against last week’s requirement. None of it looks like one big failure. Thor is the context infrastructure for AI-native software teams, a living model of what’s true that turns conversation into approved action, built specifically for the day described below, not a rare disaster, an ordinary Tuesday.

What does a normal day of context drift actually look like?

It looks like five separate, reasonable actions that each make sense in isolation and stop agreeing with each other by the end of the day. A customer issue gets mentioned in Slack. In standup, someone commits to investigate it. A Linear issue gets created from that commitment. A PR opens against what the ticket says. Later the same day, a meeting changes the release plan, because the customer demo that was supposed to happen next month just moved up to this week. Nobody in that chain did anything wrong. Each person handled their one piece of it correctly, with the information they had at the time they had it.

Walking the same day hour by hour

Morning, Slack: a customer reports a bug in a shared channel. Someone acknowledges it, says they’ll look into it. That’s the first record of the issue, and it lives in a message, not a ticket yet.

Standup, later that morning: the same person mentions it out loud, commits to investigating today. A teammate offers to help. Nothing about the commitment gets written down anywhere more durable than what everyone in the room just heard.

Midday, Linear: a ticket gets created from that commitment, with a description written from memory of the Slack report, not a link back to the original message. It’s a reasonable summary. It’s also now a second version of the same information, already one small step removed from the source.

Early afternoon, GitHub: a PR opens against the ticket as written. It’s a clean, correct implementation of what the ticket says, drafted quickly since the fix itself is small.

Late afternoon, a meeting: the customer demo the fix was originally meant for gets moved up. The release plan changes because of it. The meeting decides the fix needs to ship a day earlier than the ticket’s timeline assumed, and possibly with a different scope, since the demo now needs a narrower, faster version of the fix rather than the fuller one originally planned.

By the end of that same day, four systems, Slack, standup, Linear, and GitHub, each hold a different piece of the same story, and none of them automatically knows what the others say. The PR opened that afternoon reflects the ticket’s original timeline and scope. The ticket doesn’t reflect the meeting’s schedule change from an hour later. The Slack message that started all of it is already buried under everything that happened after it, in a channel nobody’s rereading.

Why didn’t anyone do anything wrong here?

Because every individual action in that chain was the correct one for the person taking it, given what they could see. The person who summarized the Slack report into a ticket did exactly what tickets are for. The engineer who built against the ticket did exactly what a ticket is supposed to let them do: work from a clear, written requirement instead of chasing down the original conversation themselves. The people in the meeting who changed the release plan were making a reasonable call based on new information about the customer demo. Nobody skipped a step. Nobody was careless. The problem isn’t a person failing to do their job. It’s that each of those five records lives in a different tool, was written at a different moment, and nothing connects them once a later one changes what an earlier one says.

That’s a structural gap, not a discipline problem, and it’s worth naming plainly because the instinct when something like this surfaces is usually to blame whoever should have “remembered to update the ticket.” The realistic fix isn’t asking people to remember better. Memory isn’t the failure mode here. The failure mode is that keeping five systems in agreement with each other was never anyone’s actual job, just a thing everyone assumed was happening somewhere in the gaps between their real work.

Where would Thor have caught this, specifically?

At the exact point the meeting changed the release plan, before the mismatch between the meeting and the ticket had a chance to sit unnoticed at all. Thor reads the same Slack channel, the same standup, the same Linear tracker, and the same meeting transcript this scenario runs through, and treats them as one connected work item instead of five separate records that happen to be about the same thing. When the meeting changes the release timeline, Thor sees that the change touches an already-open ticket and a PR built against its earlier version, and surfaces the conflict directly: this ticket’s timeline no longer matches what was just decided.

That’s a meaningfully different outcome than what happens by default, where the mismatch goes unnoticed until a reviewer, a QA pass, or the customer demo itself surfaces it. The earlier a conflict like this gets caught, the cheaper it is to fix. Caught at the meeting, it’s a five-minute ticket update. Caught after the PR merges, it’s rework. Caught at the customer demo, it’s the worst version of the same problem, in front of the person the fix was supposed to help.

Where exactly does this happen, mechanically?

At three specific seams, each one a manual hand-copy step with nothing linking the copy back to its source. Slack thread to ticket is the first: someone reads a conversation and writes a summary of it into a tracker, and from that point on, the ticket is a paraphrase, not a live connection to the conversation it came from. Meeting to spec is the second: a decision gets made out loud, and someone has to remember to translate it into whatever document describes the work, with no automatic link showing which meeting produced which line in the spec. Spec to agent prompt is the third, and it’s the newest one: someone (or something) turns a spec into instructions an agent acts on, and if the spec was already stale by that point, the agent inherits the staleness with no way to know it’s there.

Seam What happens What’s missing
Slack thread → ticket Someone paraphrases a conversation into a written requirement A link back to the original message, so a later change to the conversation doesn’t silently orphan the ticket
Meeting → spec A decision gets made out loud and someone writes it down later, from memory A record connecting the specific meeting moment to the specific line it changed
Spec → agent prompt A person or a tool turns a spec into instructions an agent executes Any signal to the agent that the spec it’s reading might already be behind the decision

Each seam is a single, ordinary handoff. None of them looks risky in the moment. All three are places where the current version of the truth and the copy someone’s actually working from can stop matching without anyone noticing, and nothing built into Slack, Linear, or GitHub on their own tells you when that’s happened.

Why does this get worse as agent volume goes up?

Because a person catches drift by noticing something feels off, and an agent doesn’t have that instinct. A human working from a slightly stale spec often senses it: something about the requirement doesn’t square with a comment they half-remember from a meeting, so they ask before shipping. An agent reading the same document has no equivalent gut check. It reads what’s in front of it, treats it as current, and acts on it, confidently and correctly, against a target that already moved. Research on interrupted, fragmented work backs up a version of this same point from a different angle: switching between contexts and reconstructing where things stand carries a real, measurable cost even for people, who at least have some sense that something changed. An agent reconstructing nothing, working from a single static document, has no way to sense the change at all.

That’s why this problem compounds rather than staying flat as a team adds more agents. Every agent reading from the same stale spec repeats the same wrong assumption independently, and unlike a person, none of them will second-guess it on the way.

What actually changes with a checked, sourced answer instead of a copied one?

Not more documentation. One place both a person and an agent read from, updated once, at the source, rather than five paraphrased copies scattered across Slack, a ticket, a spec, and a prompt, each frozen at whatever moment someone last touched it. That’s the practical difference behind Thor’s living model of what’s true: not a bigger wiki to maintain, but fewer places where the same fact has to be manually re-copied and can drift out of agreement with itself without anyone catching it.

FAQ

Was this a failure of process or a failure of a specific person?

Neither. Every action in the scenario was reasonable given what that person could see at the time. The gap is structural: five tools, none automatically aware of what the others say.

Wouldn’t better documentation habits fix this?

Better habits help at the margins, but they don’t remove the underlying problem: a written copy of a decision has no way to know when the decision it describes has changed somewhere else.

Is this only a risk with AI agents involved?

No, it happens on fully human teams too. It gets worse with agents because a person sometimes senses something’s off before acting; an agent reads a document and treats it as current with no equivalent instinct.

How would a team have caught this without Thor?

Usually only by luck, a reviewer who happened to be in the meeting that changed the plan, or someone cross-checking the ticket against their memory of the conversation before the PR shipped.

Does fixing this mean writing everything down more thoroughly?

No. It means having one connected record instead of several disconnected copies, so a change in one place is visible everywhere it matters, rather than writing more documents that can each go stale on their own.

See how your agents work from one checked answer instead of a stale ticket. Book a demo.

Related Posts