Lee Painter Music for the Soul. Code for the Bowl.
Think Log / 9 September 2026

2026-09-10

The most plausible explanation isn’t necessarily the right one.

A customer upgraded from version 1.6 of our SSH server to 1.7.

Their SFTP client stopped working.

The obvious conclusion:

Something changed in 1.7.

So we investigated.

Except the relevant code hadn’t materially changed.

Eventually we found the problem.

It was in their implementation.

They were using the wrong constructor when adding SFTP attributes to the response, producing malformed data that another SFTP client couldn’t parse.

Nothing we’d changed had caused it.

This is one of those debugging traps that’s incredibly easy to fall into.

A changed.

Then B broke.

Therefore A caused B.

It’s a perfectly reasonable hypothesis.

It’s just not evidence.

The most plausible explanation is where you start investigating, not where you stop.

← Back to Think Log