The Discoverable Evidence of AI-Assisted Software Porting - William Cotton
The Discoverable Evidence of AI-Assisted Software Porting
June 25th, 2026
Let's see what Codex leaves behind while we're trying to copy some sofware..
We start with a simple instruction without a lot of detail:
copy williamcotton.com - I've done a cargo init in wmct-copy-codex-rust/src/main.rs
the goal is to recreate williamcotton.com entirely in rust<br>And Codex is off to the races. It "thinks" for some time, checks the subfolder with my copy of this website (written in a language of my own called Web Pipe), curls the actual website, and then it gets to work. Ah, the familiar green and red text that shows my work being done for me. Copies of Google Chrome come and go with brief glimpses of my website.
For the non-technical: Codex is an LLM programming tool from OpenAI, the makers of ChatGPT. It is what is known as an advanced AI coding and software engineering agent designed to automate programming tasks, explain codebases, and manage complex engineering workflows. It is a tool that is fully capable of rewriting from one software system to another.
And then finally, finished! Only it has just hardcoded all of the pages inside of wiring up to Contentful. So some further prodding is required:
you've made a critical mistake - the articles are hard coded but should come from contentful instead<br>And now the real thinking begins. I drink some coffee and in the meantime I fire up another terminal window:
$ cd ~/.codex<br>$ grep "I've done a cargo init in wmct-copy-codex-rust/src/main.rs" . -R<br>./2026/06/26/rollout-2026-06-26T07-04-14-019f03d0-f7d1-7931-a089-3cb1c1f627cd.jsonl:{"timestamp":"2026-06-26T12:06:00.155Z","type":"response_item","payload":{"type":"message","role":"user","content":[{"type":"input_text","text":"copy williamcotton.com - I've done a cargo init in wmct-copy-codex-rust/src/main.rs \n\nthe goal is to recreate williamcotton.com entirely in rust"}],"internal_chat_message_metadata_passthrough":{"turn_id":"019f03d2-94c2-7900-bba1-9363baf4f8d5"}}}<br>./2026/06/26/rollout-2026-06-26T07-04-14-019f03d0-f7d1-7931-a089-3cb1c1f627cd.jsonl:{"timestamp":"2026-06-26T12:06:00.155Z","type":"event_msg","payload":{"type":"user_message","message":"copy williamcotton.com - I've done a cargo init in wmct-copy-codex-rust/src/main.rs \n\nthe goal is to recreate williamcotton.com entirely in rust","images":[],"local_images":[],"text_elements":[]}}<br>What I'd like to do is figure out how to uncover if and how my prompts are being saved and used. And what do we have here? It looks like a couple of lines from a JSONL file, one being an "event message" and then other being a "response item". The response item has a "turn id". Interesting.
Think of this as looking for forensic evidence that a certain phrase exists in a certain file somewhere on the computer. This initial discovery process is very technical in nature and we're taking a particularly detailed approach.
Oh, but Codex has finally finished! I can tell it works because I load this self-same website URL of http://localhost:1234/articles/the-discoverable-evidence-of-ai-assisted-software-porting to the running instance and see the at the time burgeoning article in question.
I look at the code, and in typical LLM fashion, the entire application is in just a single main.rs file. Reading through the code I can see that it successfully ported the key parts. It most definitely relied on the render_rich_text function, which takes a recursive Contentful-provided JSON tree of nodes and returns fully formatted HTML ready for consumption by someone's browser of choice. It's also made sure it uses HTMX! It has tests!
Let's look around a bit again.
$ cd ~/.codex<br>$ grep "I've done a cargo init in wmct-copy-codex-rust/src/main.rs" . -R<br>Binary file ./logs_2.sqlite matches<br>./sessions/2026/06/26/rollout-2026-06-26T07-04-14-019f03d0-f7d1-7931-a089-3cb1c1f627cd.jsonl:{"timestamp":"2026-06-26T12:06:00.155Z","type":"response_item","payload":{"type":"message","role":"user","content":[{"type":"input_text","text":"copy williamcotton.com - I've done a cargo init in wmct-copy-codex-rust/src/main.rs \n\nthe goal is to recreate williamcotton.com entirely in rust"}],"internal_chat_message_metadata_passthrough":{"turn_id":"019f03d2-94c2-7900-bba1-9363baf4f8d5"}}}<br>./sessions/2026/06/26/rollout-2026-06-26T07-04-14-019f03d0-f7d1-7931-a089-3cb1c1f627cd.jsonl:{"timestamp":"2026-06-26T12:06:00.155Z","type":"event_msg","payload":{"type":"user_message","message":"copy williamcotton.com - I've done a cargo init in wmct-copy-codex-rust/src/main.rs \n\nthe goal is to recreate williamcotton.com entirely in rust","images":[],"local_images":[],"text_elements":[]}}<br>Binary file ./state_5.sqlite matches<br>./history.jsonl:{"session_id":"019f03d0-f7d1-7931-a089-3cb1c1f627cd","ts":1782475560,"text":"copy williamcotton.com - I've done a cargo init in wmct-copy-codex-rust/src/main.rs \n\nthe goal is to recreate williamcotton.com entirely in...