ALL.TXT Is Not a Log. Until It's All You Have.2026年03月05日 09時02分37秒

# Recovering Logs, Reclaiming Memories — Releasing ALLTXT2ADIF

Someone reached out to me once with a message that stuck with me.

*"My PC crashed. Lost everything. wsjtx_log.adi, gone. wsjtx.log, gone. All I have left is ALL.TXT. Is there anything I can do?"*

If you operate FT8 or FT4, you know what ALL.TXT is. That quiet file WSJT-X and JTDX keep writing to in the background. A raw decode history. Not an official log.

**ALL.TXT is not a log. But when you lose your log, it becomes the last piece of evidence you have.**

ALLTXT2ADIF was built to reconstruct QSOs from that evidence — and export them as a standard ADIF file.

This situation is more common than most operators realize.

---

## Before Writing a Single Line of Code

The first decision I made wasn't about code. It was about what *not* to build.

A tool that blindly converts ALL.TXT to ADIF is technically straightforward. But it would be wrong.

ALL.TXT is a record of *received signals*, not *completed QSOs*. Third-party decodes are in there. Multiple QSOs overlap on the same frequency. RR73 gets sent multiple times — that's just normal FT8. In a pileup, you can't always tell which station a 73 was even intended for.

Anyone who's spent serious time operating FT8 knows: careless recovery means a log full of errors.

So from the very beginning, this tool had one guiding principle:

**Every recovered QSO must be explainable. Not just output — explained.**

---

## The Night We Argued About Philosophy Instead of Code

The most memorable part of this project wasn't solving a technical problem.

It was a night when I told the AIs:

**"Stop. Don't write any code. I want to talk about approach."**

Where exactly does *strict* end and *lenient* begin? Under what conditions does an RR73 count as a completed QSO? What does *high confidence* actually mean? How far should the sanitize option go?

These weren't engineering questions. They were questions about operating philosophy.

And here's where things got interesting.

I couldn't put ChatGPT and Copilot in the same room. So I became the messenger. ChatGPT would propose a boundary. I'd copy it over to Copilot. Copilot would push back — *"that threshold is dangerous, here's an edge case you're missing."* I'd carry that back to ChatGPT. A revised proposal would come. Back to Copilot. And so on.

Round after round. I was the only hallway connecting two rooms full of very opinionated engineers.

The AIs were impressive — sharp, thorough, creative. But there was something they couldn't provide: the *feel* of actually operating FT8. The quiet satisfaction of a late-night DX contact finally going through. The frustration of watching RR73 after RR73 disappear into the noise. The instinct that says *"this doesn't look right"* when a decoded message seems off.

That experience doesn't live in a dataset. It lives in hours of operating time. And in the end, *that* was what settled every disputed boundary.

Once the philosophy was locked down, we moved to implementation: ChatGPT building, Copilot verifying and proposing patches. The cycle ran deep into the night.

---

## "Stop. This Is Good Enough." — What Claude Said in the Morning

Then I went to sleep.

The AIs don't sleep. But they do have context limits. Claude had quietly dropped out of the session somewhere around midnight — context window exhausted, silently gone. This happened more than once. (There's something almost poetic about that.)

In the morning, I brought Claude back up to speed and asked for a review.

After going through everything, Claude said:

**"If you keep going, you'll end up in a loop. The current implementation is sufficient. Stop here."**

That might have been the single most important piece of advice in the entire project.

There's a trap in software development: the feeling that there's always something more to improve. And if you follow that feeling indefinitely, you end up with something too complex to trust. Knowing *when to stop* is part of good design.

ChatGPT and Copilot had been pushing forward with real momentum. Claude was the one who put a hand up and said: *this is the finish line.*

That balance — the drive to build, and the wisdom to stop — is what made this project work.

---

## A Small Development Team

Looking back, the roles broke down something like this:

- **ChatGPT** — Architecture, design discussions, primary implementation. Opinionated, tireless, always willing to go another round. The project's architect and de facto PM.

- **GitHub Copilot** — Implementation verification, patch proposals, edge case hunting. The engineer who finds the holes you didn't know were there.

- **Claude** — Code review, safety checks, and knowing when enough is enough. The QA lead with a philosophical streak. *Also known for vanishing silently when the context window runs out.* (laughs)

- **Gemini** — External perspective, expression review. The outside voice that keeps things honest.

And my role was to be the one in the hallway — carrying ideas between rooms, adding the operating experience the AIs couldn't have, and making the calls that only a human with skin in the game could make.

---

## What Grok Said

After the release, I asked Grok to review the repository independently.

One line from that review stayed with me:

> *The design directly confronts the risk that ALL.TXT is not an official log, and the confidence + review CSV architecture — which makes every recovery decision explainable — is outstanding.*

The philosophy we'd argued about through the night had come through clearly, even to an outside AI reading it cold.

5 out of 5. "Essential tool for amateur radio operators" was the verdict.

---

## What This Tool Can Recover

ALLTXT2ADIF will probably sit unused on most operators' machines.

But the day a drive fails, or a file gets overwritten, or a system just dies — and ALL.TXT is the only thing left —

What's in that file isn't just data.

- The morning you worked your first European DX
- The contact you called for an hour before someone finally came back to you
- The contest run that went better than you expected
- The exchange with a station you'll never hear again

A log is more than a record. It's a history of time spent at the radio.

---

## One Last Thing

ALLTXT2ADIF was built where an operator's judgment and AI assistance found each other.

AI isn't a replacement. It's a collaborator — one that argues, proposes, builds, and occasionally tells you to stop. Working with these tools as genuine partners, not just utilities, changed how I think about what's possible.

One request: **always check the review CSV**. The final call is yours.

If this tool recovers even one log that would otherwise have been lost — that's a win for the whole team.

Download and source code:
**https://github.com/jp1lrt/alltxt2adif**

Stars, issues, and feedback are always welcome.

And perhaps this is the most important thing of all:
The best version of this story is one where you never need ALLTXT2ADIF. Back up your wsjtx_log.adi. Do it regularly. Do it now.


73  
JP1LRT / Yoshiharu Tsukuura



コメント

コメントをどうぞ

※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。

※なお、送られたコメントはブログの管理者が確認するまで公開されません。

※投稿には管理者が設定した質問に答える必要があります。

名前:
メールアドレス:
URL:
次の質問に答えてください:
管理者のコールサインは? 小文字で。My callsign? Small leter only.

コメント:

トラックバック

このエントリのトラックバックURL: http://jp1lrt.asablo.jp/blog/2026/03/05/9840101/tb

※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。