The public code trail around Alec Radford's early GPT work is surprisingly small. The archived first GPT repository contains six commits. Git metadata attributes Radford's only commit, at 06:04 UTC on June 11, 2018, to a repository shell: README, license, and ignore file. Twenty-eight minutes later, a generic machine account adds the executable ROCStories demo, tokenizer assets, and ten NumPy weight chunks totaling 444.5 MiB. The history records a handoff; it does not identify the people behind the machine account or assign every file to Radford.
The first public recipe begins after pretraining
In that second commit's train.py, a 12-layer, 768-wide, 12-head causal Transformer, classifier, language-model loss, and multi-GPU update path share one file. The revealing equation is operational: when fine-tuning the ROCStories classifier, the optimizer combines classification loss with an auxiliary language-model loss. Near the bottom, the ten bundled parameter shards are loaded and assigned before task training begins. Public readers can inspect how pretrained representations become a supervised task model; they cannot reconstruct the earlier BookCorpus pretraining run or corpus from this package.
The repository says so more plainly than its legend sometimes does. Its README documents one implemented result, the ROCStories Cloze Test, and warns that nondeterministic GPU operations produced a median 85.8 percent accuracy over ten runs, below the paper's reported 86.5 percent single run. That is valuable evidence discipline. The code release is a runnable slice with an admitted reproduction gap, not a frozen origin story for all of GPT.
GPT-2 makes the release boundary visible
Nine months later, the first public GPT-2 repository commit was authored by Jeff Wu, not Radford. Its five source files expose a different working surface: model.py defines the Transformer and carries cached attention keys and values forward as past and present; encoder.py implements byte-level BPE; and sample.py turns logits into text with temperature, top-k, and later nucleus sampling. There is no training loop in the repository.
That absence was policy, not an overlooked folder. OpenAI's February 2019 staged-release account said the initial public package contained a smaller model and sampling code while withholding the dataset, training code, and larger model weights over misuse concerns. Later releases expanded the available model sizes, culminating in the full 1.5-billion-parameter release. The repository therefore records both engineering and governance: builders were invited first to run and study an artifact, not reproduce the system that produced it.
A lineage is not a single-author commit history
Radford is the lead author on the 2018 GPT paper and the 2019 GPT-2 paper, and Git attributes the first repository-opening commit to him. But the papers name teams, the code-and-weights drop uses a generic account, the GPT-2 repository begins with Wu's commit, and later fixes and staged model releases came from additional contributors. Git can prove which name is attached to a public change; it cannot reduce a research program to one person or reveal private divisions of labor.
The durable lesson in these two archived repositories is that repository shape is release policy. The first exposes the transfer step from bundled pretrained weights into a narrow supervised task. The second sharpens the model, tokenizer, and generation path while leaving training outside the public boundary. Neither repository is the complete GPT lineage. Together, they show exactly which part of that lineage a reader could inspect, run, and question at each release—and which part still required trust.